4

これは簡単な質問ですが、答えを見つけることができませんでした。

メッセージが再試行キューに入れられたとします (再試行キューを作成するのは誰ですか?それは WCF または MSMQ サービスですか?)。

5 分後 (これが私の再試行の遅​​延です)、そのメッセージはアプリケーション キューに戻ります。

質問: タイムアウト後にメッセージを再試行キューからアプリケーション キューに移動するのは誰ですか?

おまけの質問: 遅延はどのように追跡されていますか? メッセージは「移動」タイムスタンプと「再試行」タイムスタンプを取得しますか?

4

3 に答える 3

2

MSMQ 4.0 を使用した WCF は、自動再試行と有害メッセージ処理を提供しますが、古いバージョンの MSMQ については Hugh の回答が正しいです。

コメントからの編集: メッセージを再試行キューに移動して戻すプロセスを特定する際、これは MSMQ 4.0 の新機能であるため、MSMQ サービス自体であると想定します。WCF は、このすべてのアクティビティをラップするトランザクションに参加し、もちろん、MSMQ によってキューに配置されたメッセージを処理します。

于 2012-01-26T14:14:58.880 に答える
1

標準の msmq バインド ( netMsmqBindingおよびmsmqIntegrationBinding ) を使用する WCF は、再試行をサポートしていません。だからあなたの質問に答えて:

誰が再試行キューを作成しますか? - あなたがやる。

タイムアウト後にメッセージを再試行キューからアプリケーション キューに移動するのは誰ですか? - あなたがやる。

遅延はどのように追跡されていますか? - あなたがしなければならない。

NServiceBusはオープン ソースであり、トランスポートに MSMQ を使用できます。この製品はすぐに使用できる再試行機能を提供しますが、WCF は使用しません。

アップデート

上記は、MSMQ 3 以下に有効です。

于 2012-01-26T08:15:40.573 に答える
0

この記事によると、Handling Poison Messages MSMQ 4 には、アプリケーションがサブキューを使用して有害メッセージを処理できるようにするいくつかの新機能が用意されています。これらの機能は次のとおりです。

  • アボートカウンター
  • 移動カウンター
  • メイン キューとサブキュー間、およびサブキュー間でメッセージを移動する機能。

したがって、実際の移動は MSMQ ではなく WCF によって処理されるようです。MSMQ には、有害なメッセージと再試行の処理をサポートする機能が追加されました。

于 2012-02-13T15:41:20.093 に答える