【发布时间】:2019-06-05 15:20:19
【问题描述】:
我可以通过重新配置路径名将 Azure 服务总线队列迁移到主题和订阅吗?
是否需要更改任何代码?
如果我保持名称相同,第 3 方是否必须更改他们的代码?
【问题讨论】:
标签: azureservicebus azure-servicebus-queues azure-servicebus-topics azure-servicebus-subscriptions
我可以通过重新配置路径名将 Azure 服务总线队列迁移到主题和订阅吗?
是否需要更改任何代码?
如果我保持名称相同,第 3 方是否必须更改他们的代码?
【问题讨论】:
标签: azureservicebus azure-servicebus-queues azure-servicebus-topics azure-servicebus-subscriptions
不,如果您尝试使用 QueueClient 发送到主题,您将收到异常:
System.InvalidOperationException: 'Cannot open a Queue client for entity type Topic.'
同样尝试从订阅中接收将导致异常:
Microsoft.Azure.ServiceBus.MessagingEntityNotFoundException: Put token failed. status-code: 404, status-description: The messaging entity 'sb://ns.servicebus.windows.net/subscription' could not be found.
为了发送,您需要将QueueClient 替换为具有相同构造函数的TopicClient。
为了接收,您将不得不使用SubscriptionClient,它需要主题以及订阅名称(所以调用构造函数的一个小改动)。
QueueClient 和TopicClient 都继承自ClientEntity,但ClientEntity 没有定义任何虚拟或抽象的SendAsync() 方法,所以要真正泛型并不容易。
所需的代码更改很少,在我的情况下,我只需要更改构造函数和客户端声明的类型。
所以是的,如果您决定迁移,第 3 方将不得不更改他们的代码...
【讨论】: