Иногда, когда NServiceBus берет сообщение, он терпит неудачу с исключением ниже. Это заставляет NServiceBus повторить попытку (до установленного предела повторной попытки). Иногда один из попыток приводит к успешному управлению сообщением, но для всех повторных попыток с одним и тем же исключением бывает обычным. В этом случае сообщение направляется в очередь ошибок, как ожидалось, когда все попытки не выполняются.NServiceBus: Что заставляет событие «Failed raise» завершено обработать сообщение «событие»?
Мой вопрос: Что может послужить причиной этого исключения в первую очередь? Это не похоже на мой код обработчика сообщений, так как мой код не отображается в трассировке стека. версия
- NServiceBus: 2.6.0.1504
- ОС: Windows Server 2003
- Handler код целевой платформы .NET 3.5 или более ранних версий
Вот полное сообщение исключение и трассировки стека:
NServiceBus.Unicast.Transport.Msmq.MsmqTransport [(null)] - Failed raising 'finished message processing' event. System.Messaging.MessageQueueException: Cannot enlist the transaction.
at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
at System.Messaging.MessageQueue.Send(Object obj, MessageQueueTransactionType transactionType)
at NServiceBus.Unicast.Transport.Msmq.MsmqTransport.SendMsmqMessage(Message m, String destination)
at NServiceBus.Unicast.Transport.Msmq.MsmqTransport.Send(TransportMessage m, String destination)
at NServiceBus.Unicast.UnicastBus.SendReadyMessage(Boolean startup)
at NServiceBus.Unicast.UnicastBus.TransportFinishedMessageProcessing(Object sender, EventArgs e)
at NServiceBus.Unicast.Transport.Msmq.MsmqTransport.OnFinishedMessageProcessing()
В итоге мы обнаружили, что это произошло в результате существующих проблем с конфликтом базы данных. Когда наш код обработчика столкнулся с проблемой, он выбросил исключение, которое, как представляется, преждевременно закончило транзакцию DTC. Это привело к вышеуказанной ошибке, когда MSMQ не смог привлечь недоступную транзакцию. Я пощажу вас (неловкие) подробности о том, почему наш код не сделал это более очевидным в первую очередь. Спасибо за вашу помощь! –