将Azure Service Bus队列迁移到C#中的主题和订阅

时间:2019-06-05 15:20:19

标签: azureservicebus azure-servicebus-queues azure-servicebus-topics azure-servicebus-subscriptions

是否可以仅通过重新配置路径名将Azure Service Bus队列迁移到主题和订阅?

是否需要更改任何代码?

如果我保持名字不变,第三方是否必须更改其密码?

1 个答案:

答案 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,它需要主题以及订阅名称(因此只需很小的更改即可调用构造函数)。

QueueClientTopicClient都继承自ClientEntity,但是ClientEntity没有定义任何虚拟或抽象的SendAsync()方法,因此制作起来并不容易任何真正通用的东西。

所需的代码更改很小,在我的情况下,我只需要更改客户端的构造函数和声明的类型。

是的,如果您决定迁移,则第三方将不得不更改其代码...