我对这个队列服务很新,我不知道究竟是什么意思中毒消息。
我读到这是你不能消费的消息,但这意味着你可以偷看()并查看细节而不是接收()或什么?
从我的角度来看,我会说一个有毒的消息是队列顶部的消息,因为它的格式甚至是损坏的格式是不可靠的,因为负责处理它的业务不能这样做它可能会产生一个例外情况是,在事务方案中捕获并使用回滚进行处理,因此消息永远保持在最佳状态。
你怎么看?我完全错了吗?
我以前不得不处理毒性MSMQ消息,唉!我会说你的定义很接近。
当读取消息的服务由于异常或某些其他问题而无法处理消息并终止读取消息的事务时,有害消息基本上是从队列重复读取的消息。在这种情况下,下次从队列中读取时将再次重试队列中保留的消息。理论上,如果消息有问题,这可以永远持续下去。
例如,消息包含违反数据库约束的数据。我有时会创建一个错误队列并让处理消息的服务将“毒”消息抛入其中,如果在处理期间发生异常。这至少会从队列中删除消息,并让我有机会在不影响主生产队列的情况下查看它。
Here is some advice and information on poison message handling。