在 C# 中将 Azure 服务总线队列迁移到主题和订阅

Migrating Azure Service Bus Queue to Topic and Subscription in C#

我可以通过重新配置路径名将 Azure 服务总线队列迁移到主题和订阅吗?

是否需要更改任何代码?

如果我保持相同的名称,第 3 方是否必须更改他们的代码?

不,如果您尝试发送到带有 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()方法,所以不容易使任何东西真正通用。

所需的代码更改很少,在我的例子中,我只需要为客户端更改构造函数和声明的类型。

所以是的,如果您决定迁移,第 3 方将不得不更改他们的代码...