是否可以仅通过重新配置路径名将Azure Service Bus队列迁移到主题和订阅?
是否需要更改任何代码?
如果我保持名字不变,第三方是否必须更改其密码?
答案 0 :(得分:0)
否,如果您尝试使用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()
方法,因此制作起来并不容易任何真正通用的东西。
所需的代码更改很小,在我的情况下,我只需要更改客户端的构造函数和声明的类型。
是的,如果您决定迁移,则第三方将不得不更改其代码...