Каково значение TTL для сообщения, если в служебной шине Azure используется режим получения сообщения ReceiveAndDelete?

Я получаю сообщение от служебной шины в режиме ReceiveAndDelete и запускаю очень долгий вычислительный процесс, который после завершения отправляет почту. У меня есть регистрация ошибок во всех моих методах в моем длительном методе. Однако метод работает в течение 10-15 минут и после этого перестает отвечать на запросы, а также не регистрирует ошибку и не отправляет электронное письмо. Интересно, это может быть как-то связано с TTL сообщения.

Пожалуйста, посоветуйте, что мне делать?

    private static async Task ProcessMessagesAsync(Message message, CancellationToken token)
    {
       try
         {

           IQueueClient queueClient = new QueueClient(serviceBusConnectionString, serviceBusQueueName, ReceiveMode.ReceiveAndDelete);


            var receivedMessageTrasactionId = Convert.ToInt64(Encoding.UTF8.GetString(message.Body));

            // Very Long Running Method  
            await DataCleanse.PerformDataCleanse(receivedMessageTrasactionId);
                         // to avoid unnecessary exceptions.
          }

        catch (Exception ex)
        {
          Log4NetErrorLogger(ex);
          throw ex;
        }
    }

person user5593950    schedule 04.03.2019    source источник


Ответы (1)


При получении сообщения в режиме ReceiveAndDelete время жизни сообщения не имеет значения. Как только сообщение получено на стороне клиента, оно будет удалено из брокера. В случае ошибки сообщение исчезает. Вот почему рекомендуется использовать режим приема PeekLock, если вы хотите иметь более безопасный механизм получения и обработки сообщений. Предостережение связано со временем обработки. Я не буду вдаваться в подробности, поскольку информации достаточно, но вы можете либо обновить блокировку сообщения, либо разгрузить обработку, чтобы устранить необходимость в обновлении блокировки. Вы найдете альтернативы в этом очередь-я-хочу-это/54949746#54949746">ответить.

person Sean Feldman    schedule 04.03.2019