如何使用WCF在事务性MSMQ中明确标记消息中毒

时间:2012-12-05 11:06:26

标签: .net wcf msmq msmqintegrationbinding

我正在使用MSMQ版本4并具有事务性队列。我正在使用WCF来侦听传入消息的队列。

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

但在某些情况下,我知道输入消息无效/中毒。发生这种情况时,抛出异常会使消息跟随毒性消息处理例程,因为所有其他消息都具有所有重试和等待时间。但是当我知道消息中毒时,我没有理由重试并等待配置的时间让毒性队列处理它。

有没有办法明确地将邮件标记为中毒,以便它不会遵循配置的重试流并立即移动到毒性队列?

1 个答案:

答案 0 :(得分:0)

我会在这种情况下建议在DB中存储请求数据并且不抛出任何异常,以便成功处理WCF消息并将从队列中删除。

我们可以在以后处理这些数据,如果需要,可以很容易地处理来自DB的数据,而不是监视/管理毒物队列。

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