Gdy Webjobs pobiera wiadomość z kolejki w magazynie Azure za pośrednictwem QueueTrigger, dzierżawi wiadomość (czyni ją niewidoczną). Jeśli funkcja wyzwalania (webjob) zajmuje dużo czasu na przetworzenie wiadomości, czy to dzierżawa jest automatycznie przedłużana? Czy powinienem sobie z tym poradzić w funkcji?Czy Webjobs automatycznie odnawia dzierżawy w wiadomościach kolejki Azure?
na ten link Windows Azure Queues: Improved Leases, Progress Tracking, and Scheduling of Future Work, autor stwierdza, że „Leasing na komunikat może zostać przedłużony przez pracownika, który zrobił oryginalną rozkolejkowania tak, że może kontynuować przetwarzania komunikatu”
Uwaga: mam próbował webjob (z QueueTrigger), który czeka 20 minut.
//Write Log
Thread.Sleep(1200000);
//Write Log
Pomyślnie zakończono. I w tym czasie żadna inna instancja webjob nie próbuje wykonać tego samego elementu kolejki (nie stała się widoczna). Dlatego wydaje się, że istnieje mechanizm automatycznego odnawiania dzierżaw. W każdym razie czekam na odpowiedź od pracownika firmy Microsoft lub z oficjalnym linkiem (msdn, azure, ...).
Jedna z odpowiedzi w tym pytaniu należy do mnie. Co oznacza, że widziałem to pytanie i oczywiście drugą odpowiedź. Przeczytałem również podany link i wykonałem ten przykład dużo wcześniej. Nie znalazłem nic w sugestii, że "Twoja dzierżawa jest automatycznie przedłużana, za każdym razem 10 minut". Może tęsknię za czymś. Czy możesz określić akapit, w którym zawrzesz ten wynik? –
@NuriTasdemir Przykro mi, nie patrzyłem na nazwy plakatów. Masz rację, artykuł nie wspomina o wydłużeniu czasu i czasie jego trwania. Spojrzałem więc na kod źródłowy w GitHub (https://github.com/Azure/azure-webjobs-sdk/blob/master/src/Microsoft.Azure.WebJobs.Host/Queues/Listeners/QueueListener.cs). 10-minutowe okno jest zakodowane na stałe w linii 138. Wartość ta jest następnie przekazywana podczas niektórych wywołań metod i ponownie używana w linii 250 w zegarze, która aktualizuje komunikat, aby zresetować limit czasu widoczności. – SvenAelterman
@NuriTasdemir To trochę skomplikowane, ponieważ zacznie resetować limit czasu widoczności do połowy. Tak więc, po pierwszych 5 minutach przetwarzania, wydłuży go na 10 minut, itp. Używanie 'UpdateQueueMessageVisibilityCommand' przez' LinearSpeedupStrategy' itd. Ale najważniejsze jest to, że czas jest przedłużony w imieniu WebJob na 10 minut za każdym razem. – SvenAelterman