1

そこで、WCF サービスに MSMQ をセットアップしました。msmqIntegrationBinding を使用して電子メールをローカル キューに直接ダンプし、サービスが電子メールを取得して処理します。すべて正常に動作しますが、カスタムのデッド レター キューを追加しようとしていますが、動作しているように見えますが、つまり、入れませんサービスが障害状態にあるため、定義したカスタム キューには何も含まれません。問題は、net.msmq 値の代わりにダイレクト キューを customDeadLetterQueue 値として使用しようとしていることにあると思います。

いくつかの例を使用して、より明確にしましょう。私が見たすべてのサンプルは、このようなものに見えます。

 <binding name = "CustomDLQ"
       deadLetterQueue = "Custom"
       customDeadLetterQueue = "net.msmq://localhost/private/MyCustomDLQ">
   </binding>

私の構成は次のようになります。

  <msmqIntegrationBinding>
    <binding name="EmailProcessorBinding" 
             deadLetterQueue="Custom" 
             customDeadLetterQueue="msmq.formatname:DIRECT=OS:.\private$\failedmessages" 
             durable="true" 
             receiveRetryCount="2"
             receiveErrorHandling="Move" 
             maxRetryCycles="3"  >
      <security mode="None" />
    </binding>
  </msmqIntegrationBinding>

customDeadLetterQueue に気付きましたか? それはうまくいきませんか?それともどこかで間違えたのでしょうか?

ありがとう。

4

1 に答える 1

1

経験不足のためにこれを見逃したようですが、使用したいキューを明示的に伝える必要はありませんでした。これが最終的にバインディングを構成する方法でした。

<msmqIntegrationBinding>
 <binding name="EmailProcessorBinding" 
                     durable="true" 
                     receiveRetryCount="0"
                     receiveErrorHandling="Move" 
                     retryCycleDelay="00:20:00" 
                     maxRetryCycles="3" >
  <security mode="None" />
 </binding>
</msmqIntegrationBinding>

失敗したメッセージをどう処理するかについて、何も伝える必要がないことに注意してください。失敗すると、それらを poison と呼ばれるサブキューに入れるだけで、構成は必要ありません。

有害なメッセージを含むサブ キュー

于 2012-12-05T15:10:40.237 に答える