Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 22130|Risposta: 3

[Telaio] . Strategia di ritenti di ritenti di Polly per la resilienza .NET e la gestione dei guasti transitori.

[Copiato link]
Pubblicato su 28/05/2019 23:54:53 | | | |
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.














Precedente:. Il valore di reso PayPal IPN con integrazione NET è sempre stato INVALIDO
Prossimo:C# Uso delle parole chiave di rendimento
Pubblicato su 29/05/2019 09:17:54 |
Ho implementato personalmente il meccanismo di retry in AOP e, alla fine, ho scoperto che la libreria Polly può soddisfare le mie esigenze, ma la mia funzione è stata implementata, e mi riferisco a una libreria di terze parti, che potrebbe avere del codice inutile e non può ottimizzare il mio sistema, quindi per il momento non è utile.

Allegato c'è il mio codice:



Quando avrò tempo, darò un'occhiata anche a Polly
Pubblicato su 29/05/2019 09:22:01 |
Xiao Zhaozha Pubblicato il 29-05-2019 09:17
Ho implementato io stesso il meccanismo di ritentazione in AOP e, alla fine, ho scoperto che la libreria Polly poteva soddisfare le mie esigenze, ma la mia funzione è stata implementata, e l'introduzione ...

Non c'è nulla di male a fare da solo piccoli bisogni come questo
E dovresti aspettare la prossima volta per riprovare
Pubblicato su 29/05/2019 09:29:22 |
Winds pubblicato il 29-05-2019 alle 09:22
Non c'è nulla di male a fare da solo piccoli bisogni come questo
E dovresti aspettare la prossima volta per riprovare?

No, l'eccezione deve essere causata da conflitti di concorrenza, inserimento dati, aggiornamento e cancellazione, ma deve esserci uno che venga eseguito con successo, ....... Il codice omesso avvolge la transazione e l'eccezione verrà automaticamente annullata indietro. Al secondo tentativo, il conflitto è sparito, quindi non ho impostato un tempo di attesa.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com