我有一个Microsoft消息队列,该消息队列中填充了消息。如果处理邮件时出现问题,我想重试邮件,我不想重试邮件immidiatley。 有没有办法在MSMQ中的邮件中添加延迟以避免它在一段时间内可用?MSMQ在邮件上添加延迟
另一种选择是有另一个队列(一个重试队列)并每15分钟读一次该队列,但我宁愿不这样做。
我有一个Microsoft消息队列,该消息队列中填充了消息。如果处理邮件时出现问题,我想重试邮件,我不想重试邮件immidiatley。 有没有办法在MSMQ中的邮件中添加延迟以避免它在一段时间内可用?MSMQ在邮件上添加延迟
另一种选择是有另一个队列(一个重试队列)并每15分钟读一次该队列,但我宁愿不这样做。
你在找什么是“毒药信息处理”(即使它不是信息错误,但是临时环境问题)。
这里有很多文章。这里有一些:
Poison Message Handling in MSMQ 3.0
Poison Message Handling in MSMQ 4.0
Surviving poison messages in MSMQ
简单:你必须将它们移动到重试队列。
所以我最近看到一些代码在异常逻辑中处理这个问题,代码有一个内置的重试步骤,在尝试延迟后尝试。它失败了,等待了特定的时间,然后再次尝试。
本质上它递归地尝试设定次数(每次延长延迟)。相当整洁,没有理由再有一个队列。有很多泛型和委托用于执行这些方法。不知道这样的事情是否可以完成。我怀疑你仍然希望处理消息不能与其他队列交付的情况。