所以我在我的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?那不行吗?或者我在其他地方犯了错误?
感谢。
答案 0 :(得分:1)
显然我错过了这个,因为我缺乏经验,但我不需要明确告诉它我想要使用的队列,这最终是我最终如何配置绑定。
<msmqIntegrationBinding>
<binding name="EmailProcessorBinding"
durable="true"
receiveRetryCount="0"
receiveErrorHandling="Move"
retryCycleDelay="00:20:00"
maxRetryCycles="3" >
<security mode="None" />
</binding>
</msmqIntegrationBinding>
请注意,我不需要告诉它如何处理失败的消息。它只会在失败时将它们放入一个名为poison的子队列中,无需配置。