【问题标题】:Is there a point in using Queues instead of Topics and Subscriptions?使用队列而不是主题和订阅有什么意义吗?
【发布时间】:2019-07-04 02:50:09
【问题描述】:

我是 Azure 服务总线的新手,我正在研究它是否可以取代我们的 RabbitMQ 基础架构。

无论如何,我想知道使用队列是否有意义?如果主题和订阅提供相同的功能 + 提供从多个来源独立消费的灵活性。

例如,如果现在我有一个只有一个消费者组的设置(可能是多个消费者,但都共享同一个消息队列),我可以使用一个只有一个订阅的主题。

队列有什么意义?它是否提供了对主题和订阅的某种优化?

【问题讨论】:

    标签: azure azureservicebus azure-servicebus-topics


    【解决方案1】:

    与订阅订阅的主题不同,队列不必经过过滤。附加大吞吐量,这可以转化为一些性能优势。此外,对于接收者是单个处理器且目的地已知的场景,将消息发送到队列而不是 发布 到主题是一种更简单的语义。 NServiceBus 和 MassTransit 等框架根据是命令还是事件来区分和优化消息发送,相应地使用队列或主题/事件。

    【讨论】:

    • 这有点问题,因为您可能永远不知道是否需要添加另一个消费者组。我认为 RabbitMQ 处理得更好。你总是发布到一个交换并从一个从该交换绑定的队列中拉取,这种方式更加灵活。我想知道,也许使用 Topic-Subscriptions 被认为比直接使用队列更好,因为它更接近 RabbitMQ 语义。
    • 不一定有问题。这取决于您如何设计系统。事件不会发布到队列中,因为它没有意义。它打算被不同的逻辑订阅者使用。另一方面,命令仅用于单个逻辑接收器。所以队列更合适。
    【解决方案2】:

    使用主题而不是队列的主要优点是我们可以在一个服务主题中创建多个主题订阅。因此,发送到主题的消息将被发送到所有主题订阅,当有多个侦听器监听来自单个源的消息时,这将是非常好的。

    另一个主要优点是我们可以为每个主题订阅创建主题订阅规则或过滤器,以过滤该主题订阅接收到的消息。所有主题订阅都将具有默认主题订阅规则,该规则允许发送到该主题的所有消息都被该主题订阅接收。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2021-05-03
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      相关资源
      最近更新 更多