2016-12-05 13 views
0

ConnectionURLActiveMQのは、フェイルオーバー輸送 - 生産者/消費者が別のホスト上で動作

failover:(tcp://broker1:61616,tcp://broker2:61616)?andomize=false&jms.useAsyncSend=false&jms.dispatchAsync=false&maxReconnectAttempts=30&maxReconnectDelay=3000&jms.prefetchPolicy.queuePrefetch=1000 

シナリオ:

プロデューサーがリスナー(AUTO_ACK)

create connection 
put message 
close connection 

queue_1にメッセージを置く - ロングを持っていますこれはリスナーであるため、生きている接続

retrieves the message 
puts it in queue_2 (client_ack) 

定期

create connection 
retrieves everything from queue_2 
processes messages 
ack messages 
close connection 

問題を実行しているスレッド - broker_1がダウンしました。 FailoverTransportはトラフィックをbroker_2にリダイレクトします。 3つの部分(Procuder、Listener、Thread)はすべてbroker_2で動作します。 broker_1が戻ってきます。 ProcuderとThreadはbroker_1に接続します。リスナーはbroker_2に残ります。驚くべきことに、onMessageは、メッセージがbroker_1のqueue_1に到達すると呼び出されますが、リスナーはbroker_2のqueue_2にメッセージを置きます。

リスナーにbroker_1の動作が再開したら、再接続するように指示するにはどうすればよいですか?あるいは、運用している間は、broker_2でProducerとThreadの作業を強制する必要がありますか?

答えて

0

ブローカーがネットワーク接続されている場合は、接続の不均衡がある場合のみ問題になります。トラフィック量と接続数が中程度の場合、必ずしも問題があるとは限りません。

ActiveMQは、「最良の推測」に基づいてクライアントの自動再調整をサポートします。

  1. 設定ブローカーのネットワーク
  2. アップデート 'updateClusterClients = "true" を' と 'rebalanceClusterClients = "true" を'

refを使用するようにopenwire輸送コネクタ:http://activemq.apache.org/networks-of-brokers.html

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

管理者が接続を手動で再調整できるようにするには、Media Driver Integrate dコンソールには、以下のような方法があります。https://mediadriver.com/software/

開示:私はMedia Driverで製品開発を進めています。

関連する問題