0

ActiveMQバージョン5.4を使用しており、 純粋なマスタースレーブ構成を使用しています。私のスレーブは、障害が発生した場合にネットワークトランスポートコネクタを開始するように構成されています。私のクライアントは、ドキュメントにあるように、フェイルオーバープロトコルを使用して構成されています。

failover://(tcp://masterhost:61616,tcp://slavehost:61616)?randomize=false

マスターが死ぬと、クライアントはスレーブに完全にフェイルオーバーします。問題は、回復した後(つまり、スレーブを停止し、データをコピーし、マスターを再起動してからスレーブを再起動した後)、クライアントがまだスレーブ(開いているネットワークコネクタがない)に接続しようとしていることです。点)。したがって、クライアントはマスターを再起動した後、マスターに再接続することはありません。これはどのように機能することになっていますか?

4

1 に答える 1

3

私もこれを見ました。PooledConnectionFactoryを使用している場合は、setExpiryTimeoutを使用してプールされた接続に有効期限タイムアウトを設定します。ここにあるAPIドキュメントは、これによりマスターブローカーへの再接続が強制されることを示唆しています。

負荷やアイドル時間に関係なく、接続の有効期限が切れることを許可します。これは、フェイルオーバーでプールからの再接続を強制したり、ロードバランシングを再確立したり、マスターポストリカバリを使用したりする場合に役立ちます。

于 2012-05-24T15:53:40.983 に答える