Questo post è stato modificato l'ultima volta da Kongcida il 29-05-2019 alle 11:16
prefazione In un progetto, ci saranno problemi di funzionamento dovuti a ragioni incontrollabili. Ad esempio, un guasto al server, un crash del servizio, un'interruzione di rete, ecc. Incontrando alcuni errori riprovabili, possiamo usare Polly —— . .NET Librerie di Gestione Fallimenti Elastici e Transitori. Indirizzo ufficiale del sito web del progetto (Il login del link ipertestuale è visibile.)。 Oggi questo articolo documenterà la cattiva strategia di ritentazione di Polly.
Ambiente e strumenti
>VS 2017
>Sistema Windows 10
Testo
1: Crea una nuova applicazione console.
2: Cita Polly. Disponibile per il download nel pacchetto NuGet
3: Incolla il codice
4: F6 genera. Poi trova il file .exe generato nella cartella debug – > doppio clic per eseguire.
Puoi vedere il messaggio di output: Riprovato tre volte.
Quando F5 sta facendo debug, si può anche vedere che questo metodo è stato eseguito tre volte.
La strategia di ritentazione di Polly è spiegata in dettaglio
1: Tipo di eccezione
In questo codice, l':handle contiene il tipo di eccezione da riprovare. Cioè, quando il codice eseguito produce un'eccezione specifica, viene eseguita la funzione di ritento. Altrimenti, non verrà effettuato alcun tentativo. Perché alcune eccezioni non richiedono un nuovo tentativo.
Naturalmente, possiamo compilare qui diversi tipi di eccezioni specifici da riprovare.
La DivideByZeroException qui rappresenta un'eccezione che tenta di dividere per zero. SqlException indica un'eccezione che viene attivata quando Sql Server restituisce un errore o un avviso. Ad esempio, fallimento della connessione al database, errore di esecuzione SQL, ecc. SmtpException indica un'eccezione sollevata dal servizio postale. Ad esempio, l'invio è fallito, la connessione di rete è fallita e le informazioni dell'account email erano anomale.
Per tipi specifici di eccezione, si prega di consultare la documentazione ufficiale di Microsoft:
2: Tipo di ritentazione
1) Il primo tipo di ritentativo è un numero diretto dato di tentativi. Il seguente codice viene riprovato solo 3 volte.
Possiamo chiamare le azioni rilevanti eseguite in ogni ritentativo durante il ritento. Il codice seguente è un altro incarico successivo. Quando si effettua un retry, vengono stampati il numero di ritentativi e il motivo dell'eccezione.
Possiamo anche ritenere il codice finché non riesce.
2) Il secondo tipo di ritentativo è riprovare a intervalli. Il codice seguente significa riprovare ogni 2 secondi, 7 secondi o 10 secondi. Riprova a 10 secondi. Se l'esecuzione non ha successo, terminare il nuovo tentativo.
Possiamo anche riprovare a intervalli finché il rientro non ha successo. Questo richiede il calcolo di una funzione.
Il codice sopra si riferisce al tentativo di potenza dell'indiretto 2. Ad esempio, se l'esecuzione fallisce, la prima volta verrà riprovata a intervalli di 2 secondi, la seconda a intervalli di 4 secondi e la terza volta a intervalli di 8 secondi......... E così via. Fino a quando l'esecuzione non avrà successo.
Epilogo
Nota: I tipi di eccezione nel codice Handle sopra citato dovrebbero essere compilati in base alla situazione reale del tuo progetto reale. Non tutte le eccezioni richiedono un nuovo tentativo.
Il tipo di eccezione è la classe base per tutte le eccezioni. È meglio non riempire questo nel manico, altrimenti avranno conseguenze molto gravi.
|