Я работаю над некоторой работой по автоматизации для действий Azure с помощью PowerShell, в рамках которой мы используем функции queuetrigger. Но всякий раз, когда возникает ошибка, подозрительная очередь для этих сообщений не создается. Мы можем регистрировать ошибки в app-insights с помощью блока try catch, но мы не можем видеть создание подозрительной очереди для этих сообщений.
Ядовитая очередь Azure не создается из-за сбоя функций триггера очереди Azure
Ответы (1)
Выполните следующие шаги и посмотрите, не пропустили ли вы что-нибудь.
Создайте обработчик сообщений очереди:
Если вы по какой-то причине не смогли обработать сообщение должным образом (читайте - вы генерируете исключения во время обработки), среда выполнения в какой-то момент решит переместить ваше сообщение в подозрительную очередь. Вы можете узнать больше об этом механизме здесь. Вы, конечно, можете использовать здесь вариант
try\catch
, но тогда вопрос в том, что именно вы собираетесь делать внутриcatch
, чтобы повторить попытку позже? Наилучший вариант - просто позволить исключению перейти в среду выполнения и делегировать исключение из очереди на следующем этапе.Когда вы не можете обработать сообщение должным образом (есть даже порог, сколько раз среда выполнения будет пытаться передать вам ваше сообщение для обработки перед переходом в опасную очередь):
Обратите внимание: подозрительная очередь будет иметь вид {your-queue-name}-poison
. Не должно быть никаких ограничений разрешений (RBAC) для вашего хранилища BLOB-объектов. Если есть, предоставьте своему функциональному приложению соответствующие разрешения.
Дополнительная информация: Если вы хотите обрабатывать подозрительные сообщения, вы можете выполнить это пошаговое руководство: Захват исключения в триггере Poison Queue Функций Azure