2015-06-18 3 views
5

У меня есть один webjob на лазурном, с QueueTrigger. Работа долго (более 30 минут)Azure WebJob QueueTrigger Как удалить сообщение после получения?

public async static Task ProcessQueueMessageAsync([QueueTrigger(QUEUENAME)] string iJobId) 
{ 
//doing my long job 
} 

Моя проблема заключается в том, как удалить сообщение в очереди после запуска. Сообщение становится невидимым до тех пор, пока не появится промежуток времени (по умолчанию 30 секунд). Гораздо меньше моей продолжительности работы. Поэтому я полагаю, что мне нужно удалить сообщение в начале метода триггера. Я нахожу, как это сделать, когда вы зацикливаете с помощью метода GetMessage() вместо запуска. Но как это сделать с помощью триггера, потому что у меня нет объекта сообщения для запуска .DeleteMessage()?

ответ

3

Answered by Michael Curd on the MSDN Forums и цитируемый здесь:

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