4

activemq を使い始めたばかりで、遡及的コンシューマーについて質問があります。この機能を有効にするには、永続的なサブスクリプションが必要です。しかし、トピックで遡及が有効になっている場合と有効でない場合の永続的なサブスクリプションの違いは何ですか? activemq doc は言います。

http://activemq.apache.org/retroactive-consumer.html 遡及コンシューマは、定期的な JMS トピック コンシューマに過ぎず、サブスクリプションの開始時にすべての試行を使用して時間をさかのぼって古いメッセージを送信する必要があることを示します (またはそのトピックで送信された最後のメッセージ) 消費者が見逃した可能性があります。

遡及消費者について。恒久サブスクライバーの場合:

http://activemq.apache.org/how-do-durable-queues-and-topics-work.html ...したがって、永続的なトピック サブスクリプションの場合、JMS プロバイダーは、シャットダウン時および後で S を識別できる必要があります。後で再接続するので、実行されていないときに送信するメッセージを知ることができます

遡及モードの有無にかかわらず、永続的なサブスクリプションに大きな違いは見られません。

説明してくださいありがとう。

4

1 に答える 1

6

遡及的なコンシューマーは、実際には永続的なサブスクリプションで行うものではありません。永続トピック サブスクライバーは、永続的とマークされたすべてのメッセージを、次回の接続時まで DB に保存し、その後それらのメッセージをディスパッチします。

非永続的なトピック サブスクリプションの場合、サブスクリプションの回復ポリシーを構成し、コンシューマーに遡及的タグを付けることができます。コンシューマーが接続すると、ブローカーは、構成した回復ポリシーに基づいて、メモリ内のトピック メッセージをコンシューマーに送信します。

したがって、永続的なサブスクリプションを使用している場合は、必要ではないため、遡及的なものをいじる必要はありません。また、メモリに保存されたメッセージに対してのみ動作するため、遡及コンシューマーが常に機能することを期待しないでください。ブローカーが再起動された場合、回復するものは何もありません。

多くのシナリオでのより良いオプションは、仮想トピックを使用することです。これにより、各コンシューマーにキューが割り当てられ、コンシューマーが少しオフラインになった場合でもメッセージがキューに保存されます。

于 2013-09-09T15:17:24.303 に答える