何らかの理由でデータが 2 回送信されると、重複が発生する可能性があります。提案されたシナリオは、主にネットワークの問題に関連しています (ネットワーク エラーのためにメッセージが複数のルートで送信されたが、メッセージの複数のコピーが最終的に到着した場合、またはハンドシェイク パケット損失により送信者が再送信を余儀なくされた場合)。
MSMQ サービスを最初に正常にシャットダウンできないことを意味する方法 (停電や BSOD など) で MSMQ サービスを再起動すると、パケット損失による重複が発生する可能性があります。再起動を通じて。
クォータの超過などの通常の操作では、重複の問題が発生することはありません。また、MSMQ はマシンが常に利用できるとは限らないことを想定して設計された非同期製品であるため、ネットワーク上に送信側または受信側が存在しないようにする必要があります。
非トランザクション メッセージの順序が乱れることはまれですが、完全に正常であり、予期される必要があります。メッセージが送信されたのと同じ順序でキューに到着することに依存する非トランザクション システムを決して設計しないでください。同じ単一のトランザクション内で送信されたトランザクション メッセージのみが、送信されたのと同じ順序で到着します。これは、順序が保証されていない複数の独立したトランザクション メッセージを送信することと同じではありません。
MSMQ には重複検出が組み込まれていることに注意してください。メッセージの重複に問題がある場合は、検出パラメーターを微調整するだけでよい場合があります。MSMQ がメッセージの重複を防ぐ方法