Восстанавливаемое веб-задание Azure (не удалять из очереди)

1

В Azure Web Job у вас могут быть функции, запускаемые очередью Azure в постоянно выполняющемся задании.

Когда сообщение было прочитано из очереди, оно удаляется.

Но если по какой-то причине моя работа падает (думаю, что перезагрузка VM) текущее задание, которое не было завершено, произойдет сбой, и я потеряю информацию в сообщении.

Можно ли настроить Azure Web Jobs не удалять сообщения из очереди автоматически и делать это вручную, когда моя работа заканчивается?

Теги:
azure
azure-webjobs

1 ответ

3
Лучший ответ

Есть два случая:

  1. Функция завершилась неудачно, потому что сообщение было плохим, и мы не смогли его связать - например, вы привязываетесь к объекту Person, но тело сообщения недействительно JSON. В этом случае мы удаляем сообщение из очереди. У нас будет механизм обработки ядовитых сообщений в будущей версии. (связанный вопрос)
  2. Функция не удалась, потому что исключение было отправлено после того, как сообщение было связано - например, ваш собственный код выбрал исключение. Всякий раз, когда мы получаем сообщение из очереди (за исключением случая № 1), мы устанавливаем аренду, я думаю, 10 минут:
    • Если функция по-прежнему работает через 10 минут, мы возобновляем аренду.
    • Если функция завершена, сообщение удаляется.
    • Если функция по какой-либо причине выбрасывается, мы оставляем сообщение там и не возобновляем аренду снова. Сообщение снова появится в очереди после истечения срока аренды (максимум 10 минут).

Ответьте на свой вопрос, если перезагрузка виртуальной машины вы в случае №2, и сообщение должно появиться снова после, самое большее, 10 минут.

  • 0
    так что ... я могу понять, что если на сайте нет функции "Всегда включено", работа не потеряет никакой информации?
  • 0
    У меня нет доступа к машине с VS прямо сейчас, но я думаю, что это так - если нет, пожалуйста, дайте мне знать. Если вы хотите это проверить: на веб-сайте без «Всегда ВКЛ» создайте задание, которое привязывается к очереди и долго спит (15-20 минут?). Если веб-сайт приостанавливается во время выполнения задания, вы должны увидеть сообщение в очереди через несколько минут.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню