2

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

是否需要更改任何代码?

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

4

1 回答 1

4

不,如果您尝试使用 发送到主题,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的 a替换。TopicClient

对于接收,您将不得不使用SubscriptionClient需要主题以及订阅名称的 which(所以调用构造函数的一个小改动)。

QueueClient并且TopicClient都继承自ClientEntity,但ClientEntity没有定义任何虚拟或抽象SendAsync()方法,因此要使任何东西真正通用并不容易。

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

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

于 2019-06-05T15:20:19.060 回答