Веб-задание Azure — корректное отключение функции обработки очереди

У меня есть куча функций обработки очереди веб-заданий:

public static void ProcessSomething(
            [QueueTrigger("testrequest")] TestThing thing,
            TextWriter logger,
            CancellationToken token)

Меня смущает изящное завершение работы. Таким образом, когда вы закрываете веб-задание (или повторно развертываете его), оно позволяет запустить и завершить текущую обработку веб-задания — по умолчанию у вашего обработчика очереди есть 5 секунд для завершения. Вы можете передать CancellationToken методу для проверки запроса на отмену, если существует вероятность того, что выполнение веб-задания займет больше времени, как описано в разделе «Мягкое завершение работы» на эта статья.

Хорошо, но что странно, так это то, что я обнаружил, что когда обработчик очереди работает во время завершения работы, токен имеет установленное значение IsCancellationRequested, но даже если функция завершается в течение, скажем, секунды, этот элемент очереди помечается как «Никогда». Finished», и через 10 минут (после истечения времени аренды для этого элемента очереди) он возвращается в очередь.

Это по дизайну? Могу ли я изменить это поведение? Если, например, ваш обработчик очереди отправлял электронное письмо и срабатывал во время выключения, то он отправит электронное письмо, затем будет помечен как не завершенное, а затем снова отправит электронное письмо через 10 минут.

Помощь!


person Matt Roberts    schedule 20.03.2015    source источник
comment
Ты что-нибудь понял, Мэтт?   -  person Ian Schmitz    schedule 01.09.2015
comment
Не могли бы вы показать код в вашем методе ProcessSomething?   -  person Chris Pietschmann    schedule 06.01.2016
comment
Да, просмотр вашего кода может дать некоторые подсказки.   -  person Milan Nankov    schedule 08.11.2016
comment
жаль, было бы неплохо помочь вам, если бы вы не забросили вопрос. Надеюсь, вы поняли это.   -  person Chris Pietschmann    schedule 16.01.2019
comment
Извините, я пропустил эти! На самом деле я не уверен, насколько это актуально сейчас, учитывая последние обновления SDK для веб-заданий, поэтому я проверю и опубликую, если смогу.   -  person Matt Roberts    schedule 16.01.2019