【问题标题】:Activemq topic load balance without virtual destinations?没有虚拟目的地的 Activemq 主题负载平衡?
【发布时间】:2017-11-17 13:13:16
【问题描述】:

假设我有一个主题的 3 个订阅者 A、B、C,我希望 A、B 被视为“同一订阅者”,这意味着他们只能获得每条消息的一份副本。 C 得到了另一个副本。

我发现http://activemq.apache.org/virtual-destinations.html 是一种方式。但是如果我不能更改 activemq 代理的配置怎么办?

我想知道是否有一些“id”道具,可以让两个订阅者被视为一个?像kafka中的组ID?

【问题讨论】:

    标签: activemq


    【解决方案1】:

    我假设您正在使用来自客户端的 JMS。 ActiveMQ 5.x 仅支持不允许负载平衡主题的 JMS 1.1。 JMS 2.0 在 ActiveMQ Artemis 中实现并实现,但那是另一个产品。

    但是,您可以在不更改配置的情况下使用虚拟主题,但您必须更改主题和队列的命名。

    发布到主题:VirtualTopic.[TopicName] 并从队列消费:Consumer.[LogicalConsumerId].VirtualTopic.[TopicName]。

    将订单发布到 VirtualTopic.Orders

    消费来源:

    • Consumer.ManufacturingSystem.VirtualTopic.Orders
    • Consumer.CRMSystem.VirtualTopic.Orders

    等等

    当消费者从队列中消费时,他们可以使用不同的(或不使用)ClientId,并且仍然在每个系统的节点之间进行负载平衡。 IE。 CRMSystem 可能有两个节点,总共只会收到一条消息。

    如果您更改 ActiveMQ 配置,则可以自定义此命名约定,但适用于 OOTB。

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2020-02-28
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多