我正在使用MSMQ版本4,并且有一个事务队列。我正在使用WCF监听队列中的传入消息。

在处理过程中,对第三方组件的依赖可能会失败或在较长时间内不可用。为了弥补这一点,我使用MSMQ 4(http://msdn.microsoft.com/en-us/library/aa395218.aspx)中的有害消息处理功能来重试x次消息和y个等待时间。

但是在某些情况下,我知道输入消息无效/中毒。发生这种情况时,抛出异常将使该消息像其他所有具有重试和等待时间的其他消息一样,遵循有毒消息处理例程。但是,当我知道该消息被中毒时,我看不到重试并等待配置的时间以便由中毒队列处理该消息的原因。

是否有任何方法可以将消息显式标记为中毒,这样它就不会遵循配置的重试流程而立即移至中毒队列?

最佳答案

好吧,我建议在这种情况下,将请求数据存储在数据库中,并且不要抛出任何异常,这样对于WCF消息就可以成功处理并将其从队列中删除。

我们可以在需要时稍后处理这些数据,比监视/管理中毒队列更容易处理数据库中的数据。

您可以基于一些配置来决定消息的下一个处理时间戳,并且线程可以从DB重新处理此类消息。

关于.net - 如何在带有WCF的事务MSMQ中将邮件明确标记为中毒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13721866/

10-10 18:39