0

トピックから消費している複数のサブスクライバーがいるとします。メッセージがすべてのサブスクライバーに配信された後、このメッセージを入力に使用するジョブをトリガーしたいと思います。

したがって、これを行う簡単な方法は、すべてのサブスクライバーに正常に配信されたメッセージを、ジョブがメッセージを消費するキューに移動することです。JMSの一部ですか?

それを直接行うことができるメッセージブローカーはありますか?

そうでない場合、この問題を解決する簡単な解決策はありますか?

4

2 に答える 2

1

これは、activemq のアドバイザリを使用して実行できるはずです。

アドバイザリ メッセージの詳細については、http: //activemq.apache.org/advisory-message.htmlを参照してください。

したがって、問題のトピックに対してやりたいことは、次のトラックです。

  • 消費者数
  • メッセージが送信されたとき
  • メッセージが各コンシューマーによって確認されたとき

コンシューマーの数を取得するには、「ActiveMQ.Advisory.Consumer.Topic」をリッスンします。助言トピック

メッセージがいつディスパッチされるかを取得するには、「ActiveMQ.Advisory.MessageDelivered.Topic」をリッスンします。

メッセージがいつ確認されたかを取得するには、「ActiveMQ.Advisory.MessageConsumed.Topic」をリッスンします。

Apache Camel を簡単に使用して、これを支援し (トピックを聞いて)、すべてのコンシューマーがメッセージを処理 (ack'd) したかどうかを集計できます。その後、さらなる処理を開始できます。

于 2013-10-30T17:34:39.217 に答える
0

別の永続的なサブスクリプションを作成して、メッセージをトピックからキューに直接ルーティングすることができます。そのキューから、ジョブはメッセージを消費できます。これは、メッセージをキューにルーティングするトリガーを作成するよりもはるかに簡単です。

したがって、これを行う簡単な方法は、すべてのサブスクライバーに正常に配信されたメッセージを、ジョブがメッセージを消費するキューに移動することです。JMSの一部ですか?

いいえ、これは JMS 仕様の一部ではありません。

于 2013-10-30T14:15:30.650 に答える