問題タブ [dlq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
19 参照

error-handling - RabbitMQ でデッド レターを使用する

私の RabbitMQ コンシューマでは、次の 2 種類のエラーを区別しています。

  • 「プロデューサー エラー」: プロデューサーは実装契約を尊重していません。例: 必須データの欠落、ビジネス ルールに違反するデータの組み合わせ、予期しないコンテンツ タイプ
  • 「消費者エラー」: メッセージは完全に有効ですが、消費者はメッセージの処理に失敗します。例: コンシューマ コードのバグ、メモリの枯渇、データベースへの接続の失敗。

プロデューサーのエラーをプロデューサーに戻す必要があります。コンシューマー側のエージェント (コンシューマー自体、人間など) が失敗したメッセージを再処理するか、手動で検査するキューにコンシューマー エラーをルーティングする必要があります。プロデューサーは問題を認識しません。

Q1: 生産者のエラーと消費者のエラーの違いは関係ありますか?

Q2: キューの DLX の構成で、DLX はどちらのメッセージを受け取る必要がありますか?プロデューサー エラーまたはコンシューマー エラー? DLQ が期限切れメッセージとルーティング不能メッセージも受信することは承知しています。

アドバイスをいただきありがとうございます。

0 投票する
1 に答える
39 参照

java - Java JMS - メッセージを Dead Letter Queue に明示的に送信する

キューに割り当てられた配信不能キューにメッセージを送信するようにブローカに明示的に指示する方法はありますか?

特定の回数の再配信の試行後にメッセージを DLQ に自動的に送信するようにキューを構成できることはわかっています。これは、データベースの問題、ネットワークの問題などの一時的なエラーには完全に理にかなっています。ただし、ビジネス ルール エラーの場合、そのメッセージが再配信されるまでに X 分にわたって X 回再配信を試行することは意味がありません。ビジネスルール違反/不正なメッセージなどであることがわかっている場合は、配信不能キューに送信されます。

ビジネス ルール違反を見つけたときに、すぐにそのキューのデッド レター キューに送信できる方法があることを期待していました。デッド レター キューに送信するコードを明示的に記述できることはわかっていますが、多数 (数十) の構成可能なキューがあり、関連するデッド レター キューはミドルウェア チームによって構成されます。デッド レター キューのキュー名を明示的にコーディングしたり、独自のプロパティで構成したりしたくありません。メッセージをすぐに配信不能キューに送信し、再配信を試行しないようにブローカーに指示する簡単な方法があることを願っています。

のようなものになるようmessage.deadLetter()です。何か単純なものが欠けているように感じますが、消費者、セッション、またはメッセージにそのようなメカニズムは見られません。