質問

配信に失敗したメッセージを処理するためのこれら3つのアプローチの違いを誰かに説明できますか?

  • ポイズンキューサービス
  • デッドレターキューサービス
  • 応答サービスを使用して障害を処理する

「プログラミングWCF」がありますが、これらのいずれかを使用するタイミングや、複数を使用するのが理にかなっているタイミングはよくわかりません。ありがとう!

役に立ちましたか?

解決

デッドとポイズンは2つの異なる概念です。 有害メッセージはキューから読み取ることができるメッセージですが、コードはそれを処理する方法を知らないため、コードは例外を発生させます。これがしばらく続く場合は、他のメッセージを処理できるように、このメッセージを別のキューに入れる必要があります。このための適切なアプローチは、MSDN でで説明されています。

デッドレターとは、キューで処理されないメッセージです。ネットワークが壊れているか、受信側のMSMQコンピューターがシャットダウンしています。そんな感じ。メッセージは、Windowsによってしばらくすると自動的にデッドキューに置かれます。そのため、デッドキューを監視するサービスを作成することをお勧めします。

他のヒント

ポイズンメッセージ/デッドレターメッセージキューは、配信不能と判断されたメッセージを、それ以上配信しようとしないキューに入れるために使用されます。失敗したメッセージを手動で確認し、後で処理したい場合にこれを行います。不正なメッセージが何度も再試行することでシステムのパフォーマンスを低下させないようにするには、これらのタイプのキューを使用します。

一方、応答サービスを使用して、メッセージの処理中にエラーが発生したことを送信者に通知します。通常、この場合、不正なメッセージを手動で処理する予定はなく、リクエストが拒否されたというメッセージを送信したシステムに許可する必要があります。

これらは排他的ではないことに注意してください。キューを使用している場合、メッセージのシリアル化が常に変更されてキュー内のメッセージが中断される可能性があります。その場合、応答サービスを使用していても、デッドレターキューが必要な場合があります。

scroll top