2

MSMQ メッセージ キューを介した非同期更新を可能にする API の要件があり、API を使用する開発者がメッセージごとに異なる再試行ポリシーを指定できるようにまとめています。そのため、販売などの優先度の高いクライアント システムは、すべてのメッセージを 5 回の配信試行 (再試行) と試行間隔 15 分で送信しますが、優先度の低いクライアント システム (バックエンド メール ショット システムなど) では、ユーザーはマーケティングの設定を更新できます。 、3回の再試行と各試行の間に1時間でメッセージを送信します。

System.Messaging MSMQ (バージョン 3 または 4) の実装で、再試行の回数、再試行の遅​​延、およびメッセージをデッド レター キューに送信するか、単に削除するかなどを指定する方法はありますか? (もしそうなら、どのように?)

この要件を満たしていれば、他のメッセージング フレームワークを使用することにもオープンです。

4

1 に答える 1

2

System.Messaging MSMQ (バージョン 3 または 4) の実装で再試行回数を指定する方法はありますか

使用しているオペレーティング システム/msmq のバージョンに応じて、再試行セマンティクスの指定は WCF で高度に洗練されています。以下は、トランザクション キューを使用する Windows 2008 および MSMQ4 の場合です。

バインディングの主な設定はMaxRetryCyclesと呼ばれます。1 回の再試行サイクルは、キューからメッセージを正常に読み取り、それを処理メソッド内で処理しようとする試みです。msmq バインド プロパティReceiveRetryCountで定義されているように、この "試行" は実際には複数の試行で構成される場合があります。ReceiveRetryCount は、デキュー トランザクションをロールバックする前に、アプリケーションがメッセージの読み取りと処理を試行する回数です。これは、1 回の再試行サイクルの終わりを示します。

RetryCycleDelayプロパティを使用して、サイクル間に遅延を導入することもできます。

より複雑な考慮事項は、複数回の再試行サイクルの後でも失敗するメッセージをどうするかです。

API を使用する開発者がメッセージごとに異なる再試行ポリシーを指定できるようにする

MSMQ でこれを行う方法がわかりません。私の知る限り、エンドポイントごとに再試行セマンティクスを設定することしかできません。トランザクションを使用している場合、API ユーザーが送信されるメッセージの優先度を設定することさえ許可できません (トランザクション キューは順序どおりの配信を保証します)。

できる唯一のことは、API の別のインスタンスを高優先度でホストし、別のインスタンスを低優先度でホストすることです。これらは異なる環境でホストされる可能性があり、優先度の低いメッセージが優先度の高いメッセージとシステム リソースをめぐって競合しないという追加の利点があります。

お役に立てれば。

于 2013-08-06T10:07:44.583 に答える