Есть ли способ предотвратить попадание сообщения в подозрительную очередь, когда dequeueCount превышает при обработке очереди Azure? - PullRequest
0 голосов
/ 14 июля 2020
• 1000 1001 *

Моя текущая функция выглядит так:

public async Task ProcessThis([QueueTrigger("message-queue")] Message message, string id, string popReceipt, int dequeueCount, ILogger logger)
{
   try
   {
     ...
     //process queue here
     ...
   }
   catch (Exception e)
   {
     if (dequeueCount == this._config.DequeueCount) //Currently it's set to 10
     {
       return; //If I return here, would the message still go into poison queue?
     }

     throw e;
   } 
}

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

Ответы [ 2 ]

1 голос
/ 16 июля 2020

Если функция не генерирует исключение, Azure Среда выполнения функции рассматривает это как успешно обработанное сообщение и удаляет его из Q.

Если вы генерируете какое-либо исключение, среда выполнения считает это ошибкой и увеличивает количество исключений из очереди. Если новый счетчик превышает maxDequeueCount, он перемещается в отравление Q. См. Do c.

Поэтому, если вы просто не хотите, чтобы что-то пошло на отравление Q, просто добавьте всеобъемлющий блок для вашего ProcessThis() и подавление исключения.

0 голосов
/ 15 июля 2020

Не уверен, что такое максимальное количество очередей, но в этой статье есть удобное решение. Просто

повторно отправьте сообщение . Вы также можете подписаться на подозрительную очередь и просто повторно поставить ее в очередь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...