2015-06-18 19 views
5

Ho un webjob su azzurro, con un QueueTrigger. Il lavoro è lungo (più di 30 minuti)Coda WebJob di Azure Come rimuovere DeleteMessage dopo averlo ottenuto?

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

Il mio problema è come eliminare il messaggio in coda dopo l'attivazione. Il messaggio diventa invisibile finché non arriva l'intervallo (30 secondi per impostazione predefinita). Molto meno della durata del mio lavoro. Quindi suppongo di dover cancellare il messaggio all'inizio del metodo di trigger. Trovo come farlo quando si esegue il looping con il metodo GetMessage() invece che si attiva. Ma come farlo con trigger, perché non ho l'oggetto messaggio per eseguire .DeleteMessage()?

risposta

3

Answered by Michael Curd on the MSDN Forums, e citato qui:

L'SDK dovrebbe già gestire questo. Come hai detto, il messaggio sarà affittato (o diventerà invisibile) per 30 secondi per impostazione predefinita. Se il lavoro richiede più tempo, allora il contratto di locazione sarà rinnovato. Il messaggio non sarà disponibile per un'altra istanza della funzione a meno che l'host non si blocchi o la funzione emetta un'eccezione. Quando la funzione viene completata correttamente, il messaggio viene eliminato dall'SDK. Quindi non dovrebbe essere necessario scrivere alcun codice speciale per questo scenario.

Problemi correlati