【问题标题】:Service Bus multiple listener instances with same subscription not receiving messages具有相同订阅的服务总线多个侦听器实例未接收消息
【发布时间】:2018-04-11 08:36:48
【问题描述】:

我有一个5节点集群,每个节点都有一个微服务(这是一个无状态的可靠服务)在运行,它正在接收来自Azure Service Bus的消息。 p>

由于我只为 my_topic(Topic Name) 创建了一个 my_Subscription(Subscription Name),因此微服务实例正在随机接收消息。

我期待它在每个实例都订阅服务总线主题时被广播。

现在,如果是这种情况,我需要为每个实例创建一个新订阅,我需要更改 ARM template 并在每次我希望扩展服务时重新部署它? p>

【问题讨论】:

  • 考虑到您的所有微服务实例都只轮询一个订阅,这难道不是预期的行为吗?
  • @GauravMantri 现在如果是这种情况,我需要为每个实例创建一个新订阅,我需要更改 ARM 模板并在每次我希望我的服务扩展时重新部署它?
  • 听起来您已经准备好使用竞争消费者模式 - docs.microsoft.com/en-us/azure/architecture/patterns/…
  • 我很想知道您为什么希望多个实例处理同一条消息。通常我们希望消息只被处理一次。你介意详细说明一下吗?谢谢!
  • @GauravMantri 在我的情况下,需要同时更新所有实例的 inMemory 缓存,因此您需要在所有实例中使用消息

标签: c# azure publish-subscribe azureservicebus azure-servicebus-topics


【解决方案1】:

如果您可以让您的集群节点在启动时动态创建自己的订阅(这应该不会太难)。也许使用类似节点的唯一 ID 作为订阅名称。然后每个节点将只接收自己的消息副本,从而实现您的目标。但是,如果您的节点一直来来去去,那么您需要实施一些清理机制以确保过时的订阅不会阻塞主题的存储。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-21
    • 2020-07-06
    • 2014-02-07
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多