当前位置 : 主页 > 手机开发 > 无线 >

WCF超过MSMQ绑定.如何检测邮件何时移动到毒性队列?

来源:互联网 收集:自由互联 发布时间:2021-06-10
我正在运行一个WCF客户端,它通过MsmqBinding调用WCF服务. 框架是.Net 4.0,客户端和服务器在 Windows Server 2008 R2上运行. 通道队列是事务性的. 该服务使用以下绑定参数进行托管: receiveErrorHan
我正在运行一个WCF客户端,它通过MsmqBinding调用WCF服务.
框架是.Net 4.0,客户端和服务器在 Windows Server 2008 R2上运行.
通道队列是事务性的.

该服务使用以下绑定参数进行托管:

  receiveErrorHandling = “移动”
  receiveRetryCount = “3”
  retryCycleDelay = “00:00:20”
  maxRetryCycles = “5”

鉴于((ReceiveRetryCount 1)*(MaxRetryCycles 1))生效,这将导致
4 * 6 =在将任何给定消息移动到毒性子队列之前重试24次.

将IErrorHandler附加到我的服务我注意到在wcf子系统最终将消息移动到; poison subqueue之前,调用HandleError时,MsmqPoisonMessageException共计6次(对于有毒消息).

我想记录重试消息的准确时间,并将消息移动到毒性队列.在我看来,唯一的选择是计算某个消息出错的次数,并将此计数与绑定MaxRetryCycles进行比较.这是尴尬和错误.

我的问题是:

>我有什么办法吗?
最终检测到事件在哪里
wcf子系统移动消息
到毒药队列?

我的参考资料是:
http://msdn.microsoft.com/en-us/library/aa395218.aspx

并且:http://consultingblogs.emc.com/simonevans/archive/2007/09/17/A-comprehensive-guide-to-using-MsmqIntegrationBinding-with-MSMQ-3.0-in-WCF.aspx

重试次数当然是您参数的结果;但是在IErrorHandler中,您可以自己将消息显式移动到毒性队列.否则,它将始终根据您的绑定参数移动,并通过像任何其他队列一样侦听毒性队列来检测.
网友评论