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

没有虚拟目标的Activemq主题负载平衡?,activemq,Activemq,假设一个主题有3个订户A、B、C,我希望A、B被视为“同一订户”,这意味着他们只能获得每条消息的一份副本。C拿到了另一份 我发现这是一种方法。但是,如果我不能更改activemq代理的配置怎么办 我想知道是否有一些“id”道具,可以使两个订户被视为一个?就像kafka中的组id一样?我假定您使用的是来自客户机的JMS。ActiveMQ 5.x仅支持JMS 1.1,它不允许负载平衡主题。JMS 2.0在ActiveMQ Artemis中实现,但这是另一种产品 但是,您可以在不更改配置的情况下使用虚

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

我发现这是一种方法。但是,如果我不能更改activemq代理的配置怎么办


我想知道是否有一些“id”道具,可以使两个订户被视为一个?就像kafka中的组id一样?

我假定您使用的是来自客户机的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,并且在每个系统中的节点之间仍然保持负载平衡。即,CRM系统可能有两个节点,总共只接收一条消息


如果您更改ActiveMQ配置,则可以自定义此命名约定,但OOTB是有效的。

我假定您正在从客户端使用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,并且在每个系统中的节点之间仍然保持负载平衡。即,CRM系统可能有两个节点,总共只接收一条消息

如果您更改ActiveMQ配置,则可以自定义此命名约定,但在OOTB中有效