我正在运行一个通过MsmqBinding调用WCF服务的WCF客户端。框架是Windows4.0,客户端和服务器运行在Windows 2008 R2上。通道队列是事务性的。
该服务由以下绑定参数承载:receiveErrorHandling="Move" receiveRetryCount="3" retryCycleDelay="00:00:20" maxRetryCycles="5"
假定((ReceiveRetryCount+1) * (MaxRetryCycles + 1))有效,这将导致在将任何给定消息移动到毒子队列之前对其进行4*6 = 24重试。
将一个IErrorHandler附加到我的服务--我注意到,在wcf子系统最终将消息移动到;MsmqPoisonMessageException子队列之前,使用MsmqPoisonMessageException总共调用了6次(对于一条有害消息)。
我希望记录消息完成重试并将消息移动到毒队列的确切时间。在我看来,唯一的选择是计数某个消息错误的次数,并将此计数与绑定MaxRetryCycles进行比较。这既尴尬又容易出错。
我的问题是:
我的参考资料是: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
发布于 2011-03-25 11:00:15
重试的次数当然是参数的结果;但是在IErrorHandler中,您可以自己显式地将消息移动到毒队列中。否则,它将始终基于绑定参数移动,并将像其他队列一样通过侦听毒队列来检测。
发布于 2011-03-25 15:02:59
有许多很好的监视解决方案,您可以使用这些解决方案来监视消息队列,以等待消息的到达。MonitorWang是一个开源的开放源码程序,它可以检测消息何时到达有害消息或错误队列。在错误队列中检测消息何时已被接收到比尝试检测消息何时已被发送到错误队列更可靠。
https://stackoverflow.com/questions/5431331
复制相似问题