为什么将消息放入死信队列(MSMQ)?

问题描述 投票:2回答:1

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


基本上检查消息状态和失败原因是我需要的,但是如何配置WCF服务来监听死信队列并跟踪放在里面的所有消息,而不管发件人? 或者是否有任何其他(非WCF)方式来获取为什么特定消息被放入死信队列?

c# wcf msmq dead-letter
1个回答
1
投票

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

注意:当消息在DLQ上结束时,您将无法获得有关此消息发生原因的信息。无论您是否使用WCF,信息都不会存储在队列中。

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

© www.soinside.com 2019 - 2024. All rights reserved.