2016-03-30 2 views
0

Я установил NServiceBus для пересылки неудачных сообщений в очередь ошибок, которая контролируется ServiceControl.NServiceBus MessageForwardingInCaseOfFaultConfig не работает должным образом

Вот мой конфиг:

<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" /> 
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" /> 

Когда я отправить сообщение, которое не в состоянии обработать, он отправляется на DLQ. Однако я не могу найти копию этого сообщения в очереди ошибок или ошибок. Когда я смотрю на данные сообщения в AMS, счетчик доставки установлен в 7, но когда я проверяю журналы NSB, я могу только найти исключение один раз. Кроме того, я немного смущен, почему эти исключения записываются как «INFO». Это намного сложнее обнаружить таким образом, но это отдельная проблема.

Примечание: Я работаю на автобусе Azure Service Bus Transport.

Кто-нибудь знает, что мне здесь не хватает? Спасибо заранее!

+0

Можете ли вы разместить соответствующие биты кода, пожалуйста? –

+0

Извините, я забыл пометить xml как «код», поэтому он был пропущен каким-то образом ... – Laila

ответ

3

Когда обработчик пытается обработать сообщение и не работает, сообщение станет видимым и снова будет повторено. Если счетчик доставки, установленный в очереди, низкий, сообщение не будет обработано, и ASB будет изначально DLQ. Вот почему сообщение заканчивается в ASB DLQ, а не в настроенной очереди NSB.

Информация, которую вы видите в сообщении DLQ-ed, подтверждает это. default MaxDeliveryCount in NSB.ASB v5 установлен в 6, поэтому ASB будет DLQ вашего сообщения, чтобы сообщение момента было обработано более, чем это.

Это связано с тем, что NSB имеет собственный счетчик повторных попыток (для каждого экземпляра) и не использует встроенный DeliveryCount, предоставленный ASB. Если ваша конечная точка развернута, вам необходимо настроить MaxDeliveryCount, поскольку каждый экземпляр роли может захватить сообщение и попытаться обработать его. У каждого экземпляра будет счетчик повторов. В результате этого счетчик экземпляров может быть ниже 6, но сообщение DeliveryCount превысит это.

+0

Теперь это имеет смысл. Большое вам спасибо, Шон, ты всегда очень помог! – Laila