ここで、サンプルの JMS レイアウトに少し問題があります。
2 台のマシンに 2 つのブローカー (A、B) があり、ネットワーク コネクタを介してリンクされています。プロデューサーは任意のブローカーに送信でき、コンシューマーは任意のブローカーをリッスンでき、送信/受信するトピックはグローバルに利用できるという考えです。
トピックには、トピック内のすべてのメッセージを処理する 2 つの永続サブスクライバー クライアント (各マシンに 1 つ) があります。プロセスを再起動する必要がある場合にプロセスがワークロードを失わないように、永続的なサブスクリプションにしたいと考えています。両方のサブスクライバー クライアントは、フェイルオーバー ブローカーの URL を持つように構成されているため、最初にローカルホスト ブローカーに接続しようとし、他のブローカーに接続できない場合に接続を試みます。クライアントのフェイルオーバーは機能しているようですが、次の状況で問題が見つかりました。
各ブローカ 'A' および 'B' にはサブスクライバ クライアントが接続されています。プロデューサは 'A' に送信しています。ブローカー 'B' が再起動されます。「B」のクライアントは、接続が失われたことを登録し、「A」に切り替えます。'B' が再び表示され、'A' への永続サブスクライバとして登録されているため、メッセージ フィードを取得します。現在、アクティブな永続サブスクライバーはなく ('A' には 'B' を含む 3 つがあります)、接続制限に達するまで積み上げられます。
私の設定は間違っていますか?私が意図したことは可能ですか?
乾杯、カイ