System.Messaging MSMQ (バージョン 3 または 4) の実装で再試行回数を指定する方法はありますか
使用しているオペレーティング システム/msmq のバージョンに応じて、再試行セマンティクスの指定は WCF で高度に洗練されています。以下は、トランザクション キューを使用する Windows 2008 および MSMQ4 の場合です。
バインディングの主な設定はMaxRetryCyclesと呼ばれます。1 回の再試行サイクルは、キューからメッセージを正常に読み取り、それを処理メソッド内で処理しようとする試みです。msmq バインド プロパティReceiveRetryCountで定義されているように、この "試行" は実際には複数の試行で構成される場合があります。ReceiveRetryCount は、デキュー トランザクションをロールバックする前に、アプリケーションがメッセージの読み取りと処理を試行する回数です。これは、1 回の再試行サイクルの終わりを示します。
RetryCycleDelayプロパティを使用して、サイクル間に遅延を導入することもできます。
より複雑な考慮事項は、複数回の再試行サイクルの後でも失敗するメッセージをどうするかです。
API を使用する開発者がメッセージごとに異なる再試行ポリシーを指定できるようにする
MSMQ でこれを行う方法がわかりません。私の知る限り、エンドポイントごとに再試行セマンティクスを設定することしかできません。トランザクションを使用している場合、API ユーザーが送信されるメッセージの優先度を設定することさえ許可できません (トランザクション キューは順序どおりの配信を保証します)。
できる唯一のことは、API の別のインスタンスを高優先度でホストし、別のインスタンスを低優先度でホストすることです。これらは異なる環境でホストされる可能性があり、優先度の低いメッセージが優先度の高いメッセージとシステム リソースをめぐって競合しないという追加の利点があります。
お役に立てれば。