2017-06-15 61 views
0

假設我有3個訂戶A,B,C代表一個主題,並且我希望A,B被視爲「同一訂戶」,這意味着他們只能獲得每個消息的一個副本。而C又有了一份。Activemq主題負載平衡沒有虛擬目的地?

我發現http://activemq.apache.org/virtual-destinations.html是一種方式。但是如果我不能更改activemq代理的配置呢?

我不知道是否有一些「id」道具,可以讓兩個訂戶被視爲一個嗎?像kafka中的組ID?

回答

2

我認爲你從客戶端使用JMS。 ActiveMQ 5.x僅支持不支持負載均衡主題的JMS 1.1。 JMS 2.0在ActiveMQ Artemis中實現並實現,但這是另一種產品。

但是,您可以在不更改配置的情況下使用虛擬主題,但必須更改主題和隊列的命名。

發佈到主題:VirtualTopic。[TopicName]並從隊列中消費:Consumer。[LogicalConsumerId] .VirtualTopic。[TopicName]。

I.e.

發佈命令VirtualTopic.Orders

從消費:

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

隨着消費者從隊列中消費,他們可以使用不同(或不)的ClientId,並且仍然在每個系統中的節點之間進行負載均衡。即CRMSystem可能有兩個節點,總共只會收到一條消息。

如果您更改ActiveMQ配置,但可以使用OOTB,則可以自定義此命名約定。