2012-01-11 15 views
4

Apache ActiveMQ 5.5を使用しています。 tcp://0.0.0.0:61616で動作しているブローカー(メインブローカーと呼ぶ)があります。このブローカはストアを行い、リモートブローカにメッセージを転送します。そのために、このブローカーから2つのリモートブローカーへのネットワーク接続があります。リモートブローカの1人がフェールオーバーとしてプライマリとその他のものとして機能するようにします。これは、すべてのブローカーが稼働しているとのメッセージがあるとき、私たちはメッセージ、通常のシナリオではフェールオーバーが成功した後にプライマリリモートブローカに戻る

failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false 

をリッスンするために、スプリングDefaultMessageListenerContainerを使用している私たちは

static:(failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false) 

を使用しているURIをネットワーク接続していますメインブローカに送信されると、server1に転送され、リスナーによって消費されます。

server1でブローカを停止すると、フェイルオーバーが正常に行われ、メッセージはserver2に転送され、リスナーによって正常に消費されます。問題は、server1をバックアップし、メッセージがメインブローカーによってserver2に転送され続ける場合です。私たちの要件は、server1が起動して実行されると、メインブローカがメッセージをserver1に転送し始め、リスナーがserver1に接続してメッセージを消費する必要があるということです。一度にservers1またはserver2のうちの1つだけをアクティブにしたいので、randomizeをtrueに変更することはできません。

可能かどうか教えてください。

答えて

4

"priorityBackup"オプションをtrueに設定する必要があります。あなたURIはなります:

static:(failover://(tcp://server1:61617,tcp://server2:61617)?randomize=false&priorityBackup=true) 

これは、サーバ1(サーバのリストの最初の)優先順位のバックアップになります。 server1がダウンすると、彼はserver2にフェイルオーバーしますが、server1に再接続しようとします。したがって、再び元の状態に戻ると、server1に戻ります。このオプションは、バージョン5.6

でのみ使用可能です完全な詳細はここにある: http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html

http://activemq.apache.org/failover-transport-reference.html

ここで興味深いのブログもあります

関連する問題