Очереди ошибок 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).