我要记录使用MSMQ 3.0和Windows 2003丢弃我的wcf服务的中毒消息

时间:2020-03-06 14:35:02  来源:igfitidea点击:

我要记录使用MSMQ 3.0和Windows 2003丢弃我的wcf服务的中毒消息

解决方案

我们可能会添加类似以下的服务,该服务从中毒队列中读取消息并进行记录。

<service name="YourPosionMessageHandler"
   <endpoint
address="net.msq://localhost/private/YourServiceQueue;poison"
binding="netMsmqBinding"
    />
</service>

我们可以实现自定义IErrorHandler并使用自定义行为将其与服务关联。在实现中,检查引发的异常是否为MsmqPoisonMessageException类型,如果是,请使用System.Messaging,MessageQueue从队列中获取消息并进行记录。

有一个示例显示了大部分工作的完成方式:它将消息移至另一个队列,但是对其进行修改应该很简单,以便仅将消息记录在某个地方。

在MSDN上有一个完美的例子。
http://msdn.microsoft.com/en-us/library/ms751472.aspx