1

JMS トピックの使用時にエラー メッセージを処理する方法がわかりません。4 つのサブスクライバーを持つ永続的な JMS トピックがあります。トピックにメッセージを送信します。サブスクライバーのうち 3 人がメッセージを正常に消費し、1 人が失敗します。何回か再試行した後、メッセージは配信不能キュー (DLQ) に入れられます。

問題は、そこからどのように継続するかです。

  1. どのサブスクライバーが失敗したかを調べるにはどうすればよいですか?

  2. その購読者だけにメッセージを再配信するにはどうすればよいですか? すべてのサブスクライバーがそれを取得するので、私はそれを再びトピックに入れることはできません.

このケースを処理するためのベスト プラクティスはありますか?

それが問題なら、openMQ で Glassfish 3.1.2 を使用します。メッセージング プロバイダーの実装に固有ではないソリューションを使用したいと考えています。

ご回答ありがとうございます。乾杯アルネ

4

1 に答える 1

1

私は openmq にはあまり詳しくありませんが、多くの jms プロバイダーには、メッセージをトピックからキューに転送する機能があります。したがって、メッセージ プロデューサがメッセージをトピックに送信し、次に jms プロバイダがメッセージの個別のコピーを各コンシューマの個別のキューに転送します。各コンシューマには独自の DLQ があります。

次の利点があります。

  1. 各キュー コンシューマーの保証された SLA (たとえば、低速のコンシューマーは他のコンシューマーの速度を低下させる可能性がありますが、別のキューではそうではありません)。
  2. メッセージを失う可能性のあるコンシューマーはありません (永続的なサブスクリプションを持つトピックは、最初にこのトピックをサブスクライブした後にのみメッセージを配信します)。
  3. クラスタリングに関するいくつかの問題は簡単に解決できます (クラスタ環境のトピックへのサブスクライバ (MDB) は、原則として、クラスタ内のノードの数と同じ回数だけメッセージを受信します)。
于 2012-10-11T16:51:18.887 に答える