5

MsmqBinding を介して WCF サービスを呼び出す WCF クライアントを実行しています。フレームワークは .Net 4.0、クライアントとサーバーは Windows Server 2008 R2 で動作します。チャネル キューはトランザクションです。

サービスは、次のバインド パラメータでホストされます。 receiveErrorHandling="Move" receiveRetryCount="3" retryCycleDelay="00:00:20" maxRetryCycles="5"

((ReceiveRetryCount+1) * (MaxRetryCycles + 1)) が有効であるとすると、特定のメッセージがポイズン サブキューに移動される前に、4*6 = 24 回の再試行が行われます。

IErrorHandler をサービスにアタッチすると、wcf サブシステムが最終的にメッセージを ;poison サブキューに移動する前に、HandleError が MsmqPoisonMessageException で合計 6 回 (有害メッセージの場合) 呼び出されることに気付きました。

メッセージの再試行が完了し、メッセージがポイズン キューに移動された正確な時刻をログに記録したいと考えています。唯一のオプションは、特定のメッセージが失敗した回数をカウントし、このカウントをバインディング MaxRetryCycles と比較することです。これは扱いにくく、エラーが発生しやすいです。

私の質問は:

  • wcf サブシステムがメッセージをポイズン キューに移動するイベントを最終的に検出する方法はありますか?

私の参照は次のとおりです 。 http://msdn.microsoft.com/en-us/library/aa395218.aspx

そして: http://consultingblogs.emc.com/simonevans/archive/2007/09/17/A-comprehensive-guide-to-using-MsmqIntegrationBinding-with-MSMQ-3.0-in-WCF.aspx

4

2 に答える 2

3

もちろん、再試行の回数はパラメーターの結果です。ただし、IErrorHandler では、メッセージを自分で明示的に有害キューに移動できます。それ以外の場合は、常にバインディング パラメーターに基づいて移動し、他のキューと同様にポイズン キューをリッスンすることで検出されます。

于 2011-03-25T11:00:15.370 に答える
3

メッセージの到着をメッセージ キューで監視するために使用できる優れた監視ソリューションが多数あります。 MonitorWangは、有害なメッセージまたはエラー キューにメッセージが到着したことを検出できるオープン ソースです。メッセージがエラー キューに受信されたことを検出することは、メッセージがエラー キューに送信されたことを検出しようとすることよりも信頼性が高くなります。

于 2011-03-25T15:02:59.090 に答える