JMS パブリッシュ/サブスクライブ モードでは、2 つのコンシューマーが同じトピックをサブスクライブします。1 つのコンシューマが実行されていますが、プロデューサがメッセージを送信するときに別のコンシューマがダウンしています。実行されていないコンシューマへのメッセージはまだ保存されていますか?
ありがとう
永続的なメッセージ配信とトピックへの永続的なサブスクリプションを組み合わせて使用すると、それが可能になると思います。
から: http://docs.oracle.com/javaee/5/tutorial/doc/bncdx.html
Pub/Sub メッセージングには、次のような特徴があります。
各メッセージには複数のコンシューマーを含めることができます。
パブリッシャーとサブスクライバーにはタイミング依存性があります。トピックにサブスクライブするクライアントは、クライアントがサブスクリプションを作成した後にパブリッシュされたメッセージのみを消費できます。メッセージを消費するには、サブスクライバーが引き続きアクティブである必要があります。
JMS API は、サブスクライバーがアクティブでない間に送信されたメッセージを受信する永続的なサブスクリプションをサブスクライバーが作成できるようにすることで、このタイミングの依存性をある程度緩和します。永続サブスクリプションは、キューの柔軟性と信頼性を提供しますが、クライアントは多くの受信者にメッセージを送信できます。永続サブスクリプションの詳細については、永続サブスクリプションの作成を参照してください。
これは私たちが使用する場所javax.jms.Session.createDurableSubscriber
です:
JMS プロバイダーは、この永続サブスクリプションの記録を保持し、トピックのパブリッシャーからのすべてのメッセージが、この永続サブスクライバーによって確認されるか期限切れになるまで保持されることを保証します。