トピックから消費している複数のサブスクライバーがいるとします。メッセージがすべてのサブスクライバーに配信された後、このメッセージを入力に使用するジョブをトリガーしたいと思います。
したがって、これを行う簡単な方法は、すべてのサブスクライバーに正常に配信されたメッセージを、ジョブがメッセージを消費するキューに移動することです。JMSの一部ですか?
それを直接行うことができるメッセージブローカーはありますか?
そうでない場合、この問題を解決する簡単な解決策はありますか?
トピックから消費している複数のサブスクライバーがいるとします。メッセージがすべてのサブスクライバーに配信された後、このメッセージを入力に使用するジョブをトリガーしたいと思います。
したがって、これを行う簡単な方法は、すべてのサブスクライバーに正常に配信されたメッセージを、ジョブがメッセージを消費するキューに移動することです。JMSの一部ですか?
それを直接行うことができるメッセージブローカーはありますか?
そうでない場合、この問題を解決する簡単な解決策はありますか?
これは、activemq のアドバイザリを使用して実行できるはずです。
アドバイザリ メッセージの詳細については、http: //activemq.apache.org/advisory-message.htmlを参照してください。
したがって、問題のトピックに対してやりたいことは、次のトラックです。
コンシューマーの数を取得するには、「ActiveMQ.Advisory.Consumer.Topic」をリッスンします。助言トピック
メッセージがいつディスパッチされるかを取得するには、「ActiveMQ.Advisory.MessageDelivered.Topic」をリッスンします。
メッセージがいつ確認されたかを取得するには、「ActiveMQ.Advisory.MessageConsumed.Topic」をリッスンします。
Apache Camel を簡単に使用して、これを支援し (トピックを聞いて)、すべてのコンシューマーがメッセージを処理 (ack'd) したかどうかを集計できます。その後、さらなる処理を開始できます。
別の永続的なサブスクリプションを作成して、メッセージをトピックからキューに直接ルーティングすることができます。そのキューから、ジョブはメッセージを消費できます。これは、メッセージをキューにルーティングするトリガーを作成するよりもはるかに簡単です。
したがって、これを行う簡単な方法は、すべてのサブスクライバーに正常に配信されたメッセージを、ジョブがメッセージを消費するキューに移動することです。JMSの一部ですか?
いいえ、これは JMS 仕様の一部ではありません。