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>

请注意,我不需要告诉它如何处理失败的消息。当它失败时,它将简单地将它们放入一个称为毒物的子队列中,无需配置。

带有毒消息的子队列

于 2012-12-05T15:10:40.237 回答