【问题标题】:Migrating Azure Service Bus Queue to Topic and Subscription in C#将 Azure 服务总线队列迁移到 C# 中的主题和订阅
【发布时间】:2019-06-05 15:20:19
【问题描述】:

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

是否需要更改任何代码?

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

【问题讨论】:

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


    【解决方案1】:

    不,如果您尝试使用 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 方将不得不更改他们的代码...

    【讨论】:

      猜你喜欢
      • 2020-09-19
      • 1970-01-01
      • 2020-10-08
      • 2016-02-10
      • 2016-12-29
      • 2021-09-23
      • 2018-07-18
      • 1970-01-01
      • 2018-08-27
      相关资源
      最近更新 更多