Si implementa un flusso di lavoro Durable Functions per le approvazioni delle spese. L'orchestrator deve attendere fino a 48 ore per l'approvazione di un manager, quindi procedere. Se non viene ricevuta alcuna approvazione entro 48 ore, deve rifiutare automaticamente e inviare una notifica. La soluzione deve essere resiliente ai riavvii e ai replay. Cosa si dovrebbe implementare nell'orchestrator?
Scegli una risposta
Tocca un'opzione per controllare la tua risposta.
Risposta corretta: Attendere un evento esterno (ad esempio, "Approved") e creare un timer durevole per 48 ore, await Task.WhenAny(eventTask, timerTask), annullare il timer se l'approvazione arriva prima, altrimenti continuare con il rifiuto..
Perché questa è la risposta
L'opzione corretta utilizza Task.WhenAny con un evento esterno e un timer durevole, che è il pattern raccomandato in Durable Functions per gestire timeout e interazioni umane. Questo approccio è resiliente ai riavvii e ai replay, poiché lo stato del timer e dell'evento è gestito dal Durable Task Framework. Se l'approvazione arriva prima del timeout, il timer viene annullato. Se il timeout scade, l'orchestrator procede con il rifiuto. Le altre opzioni sono errate perché: Interrogare un database con Thread.Sleep è inefficiente e non resiliente ai riavvii dell'orchestrator, inoltre Thread.Sleep non dovrebbe essere usato negli orchestrator. Sospendere l'orchestrator con Thread.Sleep per 48 ore non è resiliente e blocca l'orchestrator in modo non deterministico. Usare un messaggio di coda con un ritardo di invisibilità non è un pattern nativo per la gestione di timeout in Durable Functions e non garantisce la resilienza desiderata per l'orchestrator.
Supera il tuo esame — senza l'infinita caccia alle risposte
Ottieni ogni domanda e spiegazione verificata per questo esame in un unico posto, e risparmia ore di preparazione. Oltre 1.000 certificazioni · Oltre 20 lingue · Inizia gratuitamente.
Supera il tuo esame più velocemente → Nessuna carta richiesta