以下のシナリオで何が起こるかわかりませんが、誰かが説明すると大きな助けになります。JMSメッセージの消費
プロデューサー(P)は、メッセージM1、M2、M3、M4、M5、M6、M7を送信します。時間T1からT7に送信されたものとする。
(AMQ)ActiveMQのは、JMSプロバイダとして使用されていると仮定し
メッセージコンシューマ(L)が話題にバインドされたリスナーになります。 トピック名:jmsTopic
シナリオ1:
AMQは、LがAMQにjmsTopicに接続されていない場合、実行されています。 PはM1からM7をjmsTopicに送信します。 LがT7より大きい時間T8でjmsTopicに接続されている場合は、メッセージM1からM7を受信するか、時間T8後にトピックに送信されたメッセージのみを受信します。
シナリオ2: AMQが実行されていて、Lが接続されており、jmsTopicを待機している場合、PはM1からM4を送信します。 LはM1〜M4を受信する。その間、LはM1からM4を処理し、PはM5からM7を送信するが、LはM4の処理中にクラッシュする。 Lが再びjmsTopicに接続すると、M5からM7を受信するか、またはLがjmsTopicに接続した後に送信されたメッセージのみがLによって受信されます。
シナリオ3: AMQが実行中です。 jmsTopic、PはM1からM7を送信します。しかし、AMQはクラッシュする。 AMQステータスを認識していて、AMQが起動していれば再接続します。
返信いただきありがとうございます。 "_ noメッセージは、リスナーがキューから取り出すまで処理されます_"これは、パブ/サブスクライバドメインにも適用されます。つまり、これはトピックに対して同じように動作します。私は、パブ/サブスクライバドメインの場合にメッセージが削除されないと考えています。メッセージのコピーが各リスナーに送信されます。 – firefox784
トピックは異なる必要があります。サブスクライバは、サブスクライブ後に投稿されたトピックのみを取得できます。 – duffymo
これをここに置いて参考にしてください。パブリッシャーとサブスクライバーはタイミングに依存します。トピックにサブスクライブするクライアントは、サブスクリプションを作成した後に発行されたメッセージのみを消費し、サブスクライバは引き続きアクティブでなければなりませんメッセージを消費するようになりました。」... [link] http://download.oracle.com/javaee/5/tutorial/doc/bncdx.html#bnceb – firefox784