Очереди ошибок NServiceBus в Azure

Я пытаюсь настроить NServiceBus в Azure. Во время локальной разработки я использую очереди хранилищ, а при развертывании в облаке я использую служебную шину Azure. По какой-то причине при возникновении ошибки сообщения не перемещаются в очередь ошибок. На самом деле очередь ошибок даже не создается.

В моем файле Web.config у меня есть следующая конфигурация:

<MessageForwardingInCaseOfFaultConfig ErrorQueue="myApp-errors"/>

При настройке NServiceBus я звоню:

.MessageForwardingInCaseOfFault()

При сбое сообщения последняя ошибка в журнале всегда

Failed raising 'transport message received' event for message with ID=170ad256-b559-417e-8b34-3882045cc19e

Есть мысли по этому поводу? Кажется, что работает обмен сообщениями, просто не работает обработка ошибок.

2 ответа

Решение

Мое первое предположение состоит в том, что очередь ошибок не может быть создана, поскольку в имени не разрешены заглавные буквы

Если это не сработает, нам придется провести более тщательный анализ, но для этого потребуется немного больше информации из журналов.

Надеюсь это поможет

У меня была такая же проблема с NServiceBus 3.3.

Вот что решило проблему для меня. Если очередь Azure не помечена как транзакционная, то NServiceBus даже не удосуживается отправить сообщение в очередь ошибок - оно просто исчезает в эфире.

Кроме того, повторные попытки второго уровня не работают в очередях Azure - вы получаете предупреждение о том, что очередь должна быть на той же машине, что и процесс.

Таким образом, если вы не отключите SLR с помощью метода.DisableSecondLevelRetries() или app.config, описанного здесь, NServiceBus будет выводить сообщения в очередь повторных попыток вместо очереди ошибок.

Чтобы это работало:

Отключите повторные попытки второго уровня. Убедитесь, что очереди Azure настроены для транзакций (даже если их нет в Azure).

Другие вопросы по тегам