2012-03-13 1 views
1

私はブローカのペアを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がオンラインに戻るまでメッセージを消費する必要があります。

私はメッセージグループの使用について考えていましたが、メッセージが送信されたグループを切り替えるために障害が発生したときに検出するための良い方法を考え出すことができませんでした。どんな勧告も大いにありがとう!

答えて

1

あなたは、消費者が「ブローカー失敗しない限り、地元のブローカーに接続したことがない」ことを確認することについて、あなたの他の質問に

<networkConnectors> 
    <networkConnector uri="static:(tcp://BrokerB:61616)" duplex="true" > 
     <excludedDestinations> 
      <queue physicalName="myQueue"/> 
     </excludedDestinations> 
    </networkConnector> 
</networkConnectors> 

...他のブローカーに行くからキューのメッセージを防止するための「excludedDestinations」を指定することができます。あなたのクライアント接続で次の操作を行い..if、あなたはいつも私は、その利用できない...また、リモートブローカに回復するだろう、それが利用可能になる

failover:(tcp://remoteBroker,tcp://localBroker)?randomize=false&priorityBackup=true 
+0

ない限りBodayリモートブローカに接続します_myQueue_メッセージをローカルから消費されないように除外しようとしていましたブローカではなく、コンフィグレーションブローカです。したがって、ServerAのプロデューサがBrokerAにメッセージを送信した場合、(常にBrokerBがダウンしていない限り)ServerA上のプロデューサからメッセージを消費するようにします。私はActiveMQ 5.5.1を使用していると述べたはずです。 _priorityBackup_は5.6で追加された機能です。 –

+0

lewでは、最初のブローカーなどに接続するために?randomize = falseを使用できます。そうでない場合は、キューの名前付け規則を使用してキューをパーティション化したり、 http://activemq.apache.org/security.html)... –

関連する問題