Функция Azure и очередь хранения - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь использовать Azure Storage Queue с функцией Azure, и я представлял ее очень простой - получение сообщения из очереди, обработка, добавление нового, если необходимо.Но сейчас я получаю беспорядок, сообщения читаются во время моей функции, обрабатывающей текущее сообщение (у меня долгий процесс), иногда я вижу сообщения в очереди, которые были обработаны давно.

Любой способ сказать функцию Azure:

  1. Получить сообщение и удалить из очереди
  2. Обработка сообщения
  3. В случае успеха - ничего не произошло, в случае ошибки (исключение) - текущее чтение.

Больше ничего.Без какой-либо сложной логики.Возможно ли это?

1 Ответ

1 голос
/ 27 марта 2019

Основано на комментариях выше

Ваша функция запускается сообщением в служебной шине. Вы обрабатываете сообщение. Если вы довольны и выполнили заданное время выполнения (5 минут по умолчанию), то сообщение помечается как выполненное. Если вы не счастливы, бросьте исключение. Функция будет считать сообщение не завершенным и отклонит его, чтобы оно снова появилось в очереди, однако число повторных попыток будет увеличиваться до тех пор, пока оно не достигнет максимального значения, после которого сообщение будет отправлено в очередь недоставленных сообщений.

Несколько замечаний

Если вы не сгенерируете исключение и процесс сделает это сам (из-за какой-то ошибки обработки), он все равно посчитает оставленное сообщение и попытается повторить попытку. Однако, если функция выполняется успешно без каких-либо ошибок, но результат не тот, который вы хотите, то бросьте ex your self.

Также в сервисной шине увеличьте время блокировки, чтобы соответствовать времени обработки вашей функции. например Для завершения функции требуется 5 минут, но время блокировки сообщения в служебной шине составляет 30 секунд, сообщение снова появится в очереди сообщений, в то время как другая копия сообщения все еще обрабатывается функцией. Поэтому увеличьте время блокировки сообщений сервисной шины, которое, по вашему мнению, является достаточным для завершения процесса.

...