没有虚拟目标的Activemq主题负载平衡?

时间:2017-06-15 07:02:21

标签: activemq

我们说我有3个订阅者A,B,C用于一个主题,我希望A,B被对待"相同的订阅者",这意味着他们只能得到一个副本信息。而C得到了另一份副本。

我发现http://activemq.apache.org/virtual-destinations.html是单向的。但是,如果我无法更改activemq代理的配置怎么办?

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

1 个答案:

答案 0 :(得分:4)

我认为您正在使用客户端的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,并且仍然在每个系统中的节点之间进行负载平衡。即CRMSystem可能有两个节点,总共只收到一条消息。

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