WCF和MSMQ故障处理

时间:2008-11-13 21:47:55

标签: c# .net wcf queue msmq

有人可以向我解释处理传递失败的邮件的这3种方法之间的区别吗?

  • 毒药队列服务
  • 死信队列服务
  • 使用响应服务来处理失败

我有“编程WCF”,但是我真的不明白你何时会使用其中一个,或者什么时候才能使用其中一个以上。谢谢!

2 个答案:

答案 0 :(得分:8)

死亡和毒药是两个不同的概念。 毒性消息是可以从队列中读取的消息,但是您的代码不知道如何处理它,因此您的代码会产生异常。如果这种情况持续一段时间,您希望将此消息放在不同的队列中,以便处理其他消息。 on MSDN描述了一个很好的方法。

死信是一个甚至不由队列处理的消息。网络中断或接收MSMQ计算机已关闭。这样的事情。一段时间后,Windows会自动将消息放入死队列。因此,建议编写一个监视死队列的服务。

答案 1 :(得分:2)

毒性消息/死信消息队列用于将已确定无法传递的消息放入不再尝试传递它们的队列中。如果您可能希望手动查看失败的消息并在以后处理它们,则可以执行此操作。当您希望通过反复重试来防止错误消息降低系统性能时,可以使用这些类型的队列。

另一方面,响应服务将用于通知发送方处理消息时出错。通常在这种情况下,您不打算手动处理错误消息,并且需要让发送消息的系统拒绝请求。

请注意,这些并非独占。如果您正在使用队列,则消息序列化总是有可能更改到足以破坏队列中的消息,在这种情况下,即使您使用响应服务,您仍可能希望拥有死信队列。

相关问题