假设我有3个订户A,B,C代表一个主题,并且我希望A,B被视为“同一订户”,这意味着他们只能获得每个消息的一个副本。而C又有了一份。Activemq主题负载平衡没有虚拟目的地?
我发现http://activemq.apache.org/virtual-destinations.html是一种方式。但是如果我不能更改activemq代理的配置呢?
我不知道是否有一些“id”道具,可以让两个订户被视为一个吗?像kafka中的组ID?
假设我有3个订户A,B,C代表一个主题,并且我希望A,B被视为“同一订户”,这意味着他们只能获得每个消息的一个副本。而C又有了一份。Activemq主题负载平衡没有虚拟目的地?
我发现http://activemq.apache.org/virtual-destinations.html是一种方式。但是如果我不能更改activemq代理的配置呢?
我不知道是否有一些“id”道具,可以让两个订户被视为一个吗?像kafka中的组ID?
我认为你从客户端使用JMS。 ActiveMQ 5.x仅支持不支持负载均衡主题的JMS 1.1。 JMS 2.0在ActiveMQ Artemis中实现并实现,但这是另一种产品。
但是,您可以在不更改配置的情况下使用虚拟主题,但必须更改主题和队列的命名。
发布到主题:VirtualTopic。[TopicName]并从队列中消费:Consumer。[LogicalConsumerId] .VirtualTopic。[TopicName]。
I.e.
发布命令VirtualTopic.Orders
从消费:
等
随着消费者从队列中消费,他们可以使用不同(或不)的ClientId,并且仍然在每个系统中的节点之间进行负载均衡。即CRMSystem可能有两个节点,总共只会收到一条消息。
如果您更改ActiveMQ配置,但可以使用OOTB,则可以自定义此命名约定。