Я использую клиент WCF, который вызывает службу WCF через MsmqBinding.
Framework .Net 4.0, клиент и сервер работает на Windows Server 2008 R2.
Очередь канала является транзакционной.
Сервис размещается с такими параметрами привязки:
receiveErrorHandling="Move"
receiveRetryCount="3"
retryCycleDelay="00:00:20"
maxRetryCycles="5"
Учитывая, что ((ReceiveRetryCount + 1) * (MaxRetryCycles + 1)) действует, это приведет к
4 * 6 = 24 повторных попыток любого данного сообщения, прежде чем оно будет перемещено в очередь ядов.
Прикрепление IErrorHandler к моему сервису. Я заметил, что HandleError вызывается с MsmqPoisonMessageException в общей сложности 6 раз (для сообщения о подозрении), прежде чем подсистема wcf, наконец, переместит сообщение в очередь;
Я хочу записать точное время, когда сообщение завершено, повторная попытка и сообщение перемещено в очередь отравления. Мне кажется, что единственная возможность - подсчитать, сколько раз в сообщении возникли сбои, и сравнить это число с привязкой 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