Implementujesz przepływ pracy Durable Functions do zatwierdzania wydatków. Orchestrator musi czekać do 48 godzin na zatwierdzenie przez menedżera, a następnie kontynuować. Jeśli zatwierdzenie nie zostanie otrzymane w ciągu 48 godzin, musi automatycznie odrzucić wniosek i wysłać powiadomienie. Rozwiązanie musi być odporne na restarty i ponowne uruchomienia. Co należy zaimplementować w orchestratorze?
Wybierz odpowiedź
Dotknij opcji, aby sprawdzić swoją odpowiedź.
Poprawna odpowiedź: Czekaj na zdarzenie zewnętrzne (np. „Approved”) i utwórz trwały timer na 48 godzin, użyj await Task.WhenAny(eventTask, timerTask), anuluj timer, jeśli zatwierdzenie nadejdzie wcześniej, w przeciwnym razie kontynuuj odrzucenie..
Dlaczego to jest odpowiedź
Prawidłową opcją jest użycie Task.WhenAny z zewnętrznym zdarzeniem i trwałym timerem. To podejście jest odporne na restarty, ponieważ Durable Functions automatycznie odtwarza stan orchestratora, w tym oczekujące timery i zdarzenia. Jeśli zatwierdzenie nadejdzie przed upływem 48 godzin, timer zostanie anulowany, a orchestrator przejdzie do następnego kroku. Jeśli timer wygaśnie, orchestrator automatycznie odrzuci wniosek. Pozostałe opcje są nieprawidłowe: Odpytywanie bazy danych co minutę przez 48 godzin jest nieefektywne i kosztowne. Użycie Thread.Sleep w orchestratorze jest anty-wzorcem, ponieważ blokuje wątek i nie jest odporne na restarty. Wiadomości w kolejce z opóźnieniem niewidoczności nie są przeznaczone do bezpośredniego sterowania logiką orchestratora i nie zapewniają odporności na restarty w ten sposób.
Zdaj egzamin — bez niekończącego się szukania odpowiedzi
Uzyskaj wszystkie zweryfikowane pytania i wyjaśnienia do tego egzaminu w jednym miejscu i zaoszczędź godziny przygotowań. Ponad 1000 certyfikacji · Ponad 20 języków · Zacznij za darmo.
Zdaj egzamin szybciej → Karta nie jest wymagana