Weblogic サーバー 12c で一様分散キューをセットアップしました。jms 分散キューを使用して、配信順序と高可用性を実現しようとしています。私のプロトタイプ テスト デプロイでは、クラスター内に 2 つの管理対象サーバーがあります。この管理対象サーバーはそれぞれ、jms サーバー、つまり jms サーバー 1 と jms サーバー 2 をホストします。jdbc永続ストアを使用してjmsサーバーを構成しました。サーバー アフィニティを有効にしました。
- Java queuproducer t3::/managed_server1 などのプロデューサーを実行しています。4 メッセージを送信します。Weblogic 監視コンソールから、キューへのコンシューマがまだないため、キューに 4 つのメッセージがあることがわかります。
- ここで、managed_server1 をシャットダウンします。
- Java queuconsumer t3://managed_server2 でリッスンするコンシューマを起動します。プロデューサがすべてのメッセージを jms server1 に送信し、ダウンしているため、このコンシューマはメッセージを消費できません。
- 管理対象サーバー 1 を起動し、コンシューマーを開始して t3://managed_server1 をリッスンします。すべてのメッセージを取得できます。
ここに私の問題があります。managed_server1 がダウンした場合、そこに戻ってこない場合、すべてのメッセージが失われますか。また、Java キュープロデューサー t3://managed_server2 にメッセージを送信する別のプロデューサーが存在する場合、これらのプロデューサー間の時間に基づくメッセージの順序は保証されません。
私は少し道に迷っています。何か足りないのでしょうか。注文の単位は、これを克服するのに役立ちますか。または、分散キューの代わりに分散トピックを使用する必要があります。この場合、すべての jms サーバーがプロデューサーからすべてのメッセージを受信しますが、consumre がリッスンしている 1 つの jms サーバーに障害が発生した場合、他のアプリケーションに切り替えると、アプリケーションには 1 つのコンシューマーしかありません。 jms サーバー、中断したところからではなく、最初からメッセージを取得し始めている可能性があります。
同じことに関する提案は役に立ちます。