私はブローカのペアをActiveMQ 5.5.1のブローカのネットワークとして設定しています。各ブローカーは、WANを介して通信するサーバー上に存在します。ブローカのネットワークをコンフィグレーションするキューコンシューマをローカルホストにしないブローカのエラーが発生しない限り
<amq:queue id="myQueue" physicalName="myQueue" />
<amq:topic id="myTopic" physicalName="MyTopic" />
:
<amq:broker useJmx="false" persistent="false">
<amq:networkConnectors>
<amq:networkConnector uri="static:(tcp://BrokerB:61616)" duplex="true" />
</amq:networkConnectors>
<amq:transportConnectors>
<amq:transportConnector uri="tcp://BrokerA:61616" />
</amq:transportConnectors>
</amq:broker>
BrokerB各サーバーでサーバーB
<amq:broker useJmx="false" persistent="false">
<amq:networkConnectors>
<amq:networkConnector uri="static:(tcp://BrokerA:61616)" duplex="true" />
</amq:networkConnectors>
<amq:transportConnectors>
<amq:transportConnector uri="tcp://BrokerB:61616" />
</amq:transportConnectors>
</amq:broker>
上のサーバーA上の
BrokerA、私は次のトピックとキューを作成するJavaサービスが実行されています
javaサービス(各サーバー上)は、myQueueのプロデューサとコンシューマ、およびmyTopicのプロデューサとコンシューマを作成します。両方の消費者がmyTopicにすべてのトピックメッセージを受け取るようにしてください。問題はmyQueueです。構成されたブローカーがmyQueueメッセージを消費するだけです。たとえば、BrokerAがServerAでサービスメッセージを生成する場合、私はServerB上のBrokerBがそのメッセージを消費するようにしたいだけです。私のテストでは、ServerAで生成されたメッセージの約50%がBrokerAで消費され、50%がBrokerBで消費されています。さらに、BrokerBがオフラインになった場合、BrokerBはオンラインでmyQueueメッセージを受け入れ、すべてmyQueueメッセージを消費して、BrokerBがオンラインに戻るまでメッセージを消費する必要があります。
私はメッセージグループの使用について考えていましたが、メッセージが送信されたグループを切り替えるために障害が発生したときに検出するための良い方法を考え出すことができませんでした。どんな勧告も大いにありがとう!
ない限りBodayリモートブローカに接続します_myQueue_メッセージをローカルから消費されないように除外しようとしていましたブローカではなく、 コンフィグレーションブローカです。したがって、ServerAのプロデューサがBrokerAにメッセージを送信した場合、(常にBrokerBがダウンしていない限り)ServerA上のプロデューサからメッセージを消費するようにします。私はActiveMQ 5.5.1を使用していると述べたはずです。 _priorityBackup_は5.6で追加された機能です。 –
lewでは、最初のブローカーなどに接続するために?randomize = falseを使用できます。そうでない場合は、キューの名前付け規則を使用してキューをパーティション化したり、 http://activemq.apache.org/security.html)... –