2017-06-15 14 views
0

私は3つのサブスクライバA、B、Cを1つのトピックに持ち、A、Bを "同じサブスクライバ"として扱いたいとしましょう。つまり、各メッセージのコピーを1つだけ取得できます。そしてCは別のコピーを手に入れました。Activemqトピック仮想負荷のないロードバランス?

http://activemq.apache.org/virtual-destinations.htmlは片道です。しかし、もし私がactivemqブローカの設定を変更できない場合はどうすればいいですか?

"id"小道具があるのだろうか、2人の加入者を1人として扱うことができるのだろうか?カフカのようなグループidですか?

答えて

2

クライアントからJMSを使用しているとします。 ActiveMQ 5.xはロードバランスされたトピックを許可しないJMS 1.1のみをサポートしています。 JMS 2.0はActiveMQ Artemisに実装されていますが、これは別の製品です。

ただし、設定を変更せずに仮想トピックを使用できますが、トピックとキューの名前を変更する必要があります。

トピックに公開する:[TopicName] VirtualTopic。キューから消費する:Consumer。[LogicalConsumerId] .VirtualTopic。[TopicName]。

I.e.等

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

      から消費VirtualTopic.Ordersに命令を発行

      コンシューマはキューから消費されるため、異なるClientIdを使用することも、各システムのノード間で負荷分散を行うこともできます。私。 CRMSシステムは2つのノードを有し、合計で1つのメッセージしか受信しない。

      この命名規則は、ActiveMQ設定を変更してもOOTBで動作するようにカスタマイズすることができます。