MSMQ毒物消息表示什么?

时间:2019-02-15 07:18:22

标签: msmq

我对这个队列服务还很陌生,我不知道真正的意思是中毒的消息。

我读到这是您不能使用的消息,但这意味着您可以Peek()查看详细信息,但看不到Receive()或什么?

从我的角度来看,我要说的是中毒消息,它是队列顶部的消息,由于其格式甚至格式已损坏,因此无法使用,因为负责处理它的企业无法做到这一点并且可能会生成一个异常,该异常在事务性场景中被捕获并通过回滚进行处理,因此该消息永远保持在最前。

您怎么看?我完全错了吗?

1 个答案:

答案 0 :(得分:1)

我以前不得不处理有毒的MSMQ消息,嗯!我想你的定义很接近。

有毒消息基本上是一种消息,当读取消息的服务由于异常或其他问题而无法处理该消息并终止读取该消息的事务时,将从队列中重复读取该消息。在这种情况下,保留在队列中的消息会在下一次从队列中读取时再次重试。从理论上讲,如果消息有问题,这将永远持续下去。

例如,消息包含违反数据库约束的数据。如果有时在处理过程中发生异常,我有时会创建一个错误队列,并让处理消息的服务将“中毒”消息扔进去。这样至少可以从队列中删除该消息,并让我有机会稍后查看它,而不会影响主生产队列。

Here is some advice and information on poison message handling