2017-12-11 9 views
1

Caseステートメントに基づいてさまざまな電子メールとメソッドを処理するMSMQがあります。いずれかのケースに一致しないメッセージが入った場合は、正しいエラーメールを送信します。問題は、メッセージが正しく動作するまでキューに残りますが、決して一致しないため、直ちにキャッチしないと何千回も繰り返して電子メールを送信します。MSMQトランザクションコミット、アボート、または廃棄?

ケースが見つかった場合はトランザクションがコミットされていますが、このエラーについてはコミットする必要がありますか、代わりにアボートまたは廃棄する必要があります。

答えて

0

私が正しく理解していれば、実際には処理されたため、処理されていない書式(デフォルトの場合)をトラップしてメッセージをコミットするようにコードを更新します。他のシステムでは、電子メールの代わりにデッドレターキューにメッセージを移動します。これにより、問題の原因となった問題を解決したときに処理するキューに戻すことができます。しかし、このシナリオでは、メッセージをコミットしたいと思うでしょう。

アボートを使用したくない場合は、アボートをキューに戻すためです。

1

メッセージを受信して​​処理したため、メッセージがケースに準拠していないため、まだアクションが実行されて処理されたため、トランザクションを介してキューから削除する必要があるためコミットする必要があります。