2015-10-14 151 views
2

前言:
我有一个web应用程序,它不时发送MSMQ消息(使用UseDeadLetterQueue = true)。我还可以看到其中一些消息被放入系​​统死信队列中。但是,我无法直接从“计算机管理”控制台查看失败原因。
我发现下面的资源:
https://msdn.microsoft.com/en-us/library/ms789035(v=vs.110).aspx
允许检查消息的状态和故障。但它只能在WCF范围内使用(因为它使用OperationContext)。为什么消息放入死信队列(MSMQ)?


基本上检查消息状态和故障的原因是什么,我需要,但我怎么可以配置一个WCF服务听死信队列和跟踪放里面,无论发送的所有邮件?

或者是否有任何其他(非WCF)的方式来获得为什么特定消息被放入死信队列的原因?

回答

0

您找到的链接文章告诉您如何创建一个将消息从DLQ中取出的WCF服务。请注意,它告诉您必须使用AddressFilterMode = AddressFilterMode.Any来关闭所有消息,而不管发件人。

注意:到消息在DLQ上结束时,您将不会获得有关发生这种情况的原因的信息。无论您是否使用WCF,该信息未存储在队列中。

例如,如果您的收件人是使用MSMQ绑定的WCF侦听器,则抛出的任何异常都将导致邮件无法传递。 MSMQ将重试一段时间,然后最终放弃并将消息放入DLQ。所以如果你想知道原来的原因,你需要在你的WCF服务中添加一些跟踪来捕获和跟踪抛出的异常。

相关问题