Quando Webjob riceve un messaggio da una coda su Archiviazione di Azure tramite QueueTrigger, affitta il messaggio (lo rende invisibile). Se la funzione di attivazione (di webjob) impiega molto tempo per elaborare il messaggio, questo lease viene automaticamente esteso? O dovrei gestirlo nella funzione?I Webjobs rinnovano automaticamente i lease sui messaggi di Azure Queue?
Su questo link Windows Azure Queues: Improved Leases, Progress Tracking, and Scheduling of Future Work, l'autore afferma che "un contratto di locazione il messaggio può essere esteso dal lavoratore che ha fatto il dequeue originale in modo che possa continuare l'elaborazione del messaggio"
Nota: ho provato un webjob (con un QueueTrigger) che aspetta 20 minuti.
//Write Log
Thread.Sleep(1200000);
//Write Log
È stato completato correttamente. E durante questo periodo nessuna altra istanza di webjob tenta di tentare lo stesso oggetto della coda (non è diventato visibile). Pertanto sembra che esista un meccanismo di rinnovo automatico per locazioni. Comunque sto aspettando una risposta da un dipendente Microsoft o con un link ufficiale (msdn, azzurro, ...).
Una delle risposte in questa domanda mi appartiene. Il che significa che ho visto quella domanda e ovviamente l'altra risposta. E ho anche letto il link fornito e ho fatto questo esempio molto prima. Non sono riuscito a trovare nulla in quelli che suggerivano "il tuo leasing viene automaticamente esteso. Sono 10 minuti ogni volta". Forse mi manca qualcosa. Potresti specificare il paragrafo con cui concludi questo risultato? –
@NuriTasdemir Mi dispiace, non ho guardato i nomi dei poster. Hai ragione, l'articolo non menziona l'estensione del tempo e quanto tempo è. Quindi, ho guardato il codice sorgente su GitHub (https://github.com/Azure/azure-webjobs-sdk/blob/master/src/Microsoft.Azure.WebJobs.Host/Queues/Listeners/QueueListener.cs). La finestra di 10 minuti è hardcoded sulla riga 138. Tale valore viene quindi passato lungo alcune chiamate di metodo e utilizzato nuovamente sulla riga 250 in un timer che aggiornerà il messaggio per reimpostare il timeout di visibilità. – SvenAelterman
@NuriTasdemir È un po 'complicato perché inizierà a reimpostare il timeout di visibilità a metà. Quindi, dopo i primi 5 minuti di tempo di elaborazione, verrà esteso per 10 minuti, ecc. C'è l'uso di "UpdateQueueMessageVisibilityCommand' via' LinearSpeedupStrategy' ecc. Ma la linea di fondo è che il tempo è esteso per conto di WebJob per 10 minuti ogni volta. – SvenAelterman