使用直接队列而不是net.msmq配置自定义死信队列

时间:2012-12-03 17:17:24

标签: wcf msmq

所以我在我的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?那不行吗?或者我在其他地方犯了错误?

感谢。

1 个答案:

答案 0 :(得分:1)

显然我错过了这个,因为我缺乏经验,但我不需要明确告诉它我想要使用的队列,这最终是我最终如何配置绑定。

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

请注意,我不需要告诉它如何处理失败的消息。它只会在失败时将它们放入一个名为poison的子队列中,无需配置。

sub queue with poison message in it