Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 22130|Antwort: 3

[Rahmen] . .NET-Resilienz und Transient Failure Management Polly-Wiederholungsstrategie

[Link kopieren]
Veröffentlicht am 28.05.2019 23:54:53 | | | |
Dieser Beitrag wurde zuletzt von Kongcida am 29.05.2019 um 11:16 Uhr bearbeitet

Vorwort
In einem Projekt gibt es Probleme mit dem Projektbetrieb aus unkontrollierbaren Gründen. Zum Beispiel ein Serverausfall, ein Dienstabsturz, Netzwerkausfall usw. Wenn wir auf wiederholbare Fehler stoßen, können wir Polly —— . .NET elastische und transiente Fehlerbehandlungsbibliotheken. Offizielle Website des Projekts (Der Hyperlink-Login ist sichtbar.)。 Heute wird dieser Artikel Pollys schlechte Wiederholungsstrategie dokumentieren.


Umwelt & Werkzeuge


>VS 2017
>Windows-10-System


Text


1: Erstellen Sie eine neue Konsolenanwendung.

2: Zitat Polly. Verfügbar zum Download im NuGet-Paket

3: Fügen Sie den Code ein



4: F6 erzeugt. Dann sucht man die generierte .exe-Datei unter dem Debug-Ordner – > doppelt klicken, um auszuführen.



Du kannst die Ausgabemeldung sehen: Dreimal erneut versucht.

Wenn F5 debuggt, sieht man auch, dass diese Methode schon dreimal angewendet wurde.


Pollys Wiederholungsstrategie wird ausführlich erklärt

1: Ausnahmetyp


In diesem Code enthält der :handle den Ausnahmetyp, der erneut versucht werden soll. Das heißt, wenn der ausgeführte Code eine bestimmte Ausnahme erzeugt, wird die Retry-Funktion ausgeführt. Andernfalls wird kein erneuter Versuch durchgeführt. Weil einige Ausnahmen keinen erneuten Versuch erfordern.

Natürlich können wir hier eine Reihe spezifischer Ausnahmetypen einfüllen, um es erneut zu versuchen.



Die DivideByZeroException stellt hier eine Ausnahme dar, die versucht, durch Null zu teilen.
SqlException zeigt eine Ausnahme an, die ausgelöst wird, wenn SQL Server einen Fehler oder eine Warnung zurückgibt. Zum Beispiel Datenbankverbindungsfehler, SQL-Ausführungsfehler usw.
SmtpException zeigt eine vom Postdienst erhobene Ausnahme an. Zum Beispiel schlug das Senden fehl, die Netzwerkverbindung scheiterte und die E-Mail-Kontoinformationen waren abnormal.

Für spezifische Ausnahmetypen siehe bitte die offizielle Microsoft-Dokumentation:



2: Wiederversuchstyp

1) Die erste Art des Wiederversuchens ist eine direkt vorgegebene Anzahl von Wiederholungen. Der folgende Code wird nur dreimal wiederholt.

Wir können die relevanten Aktionen aufrufen, die bei jedem erneuten Versuch durchgeführt werden. Der folgende Code folgt später in einer weiteren Kommission. Beim Wiederholen eines Versuchs werden die Anzahl der Wiederholungen und der Grund für die Ausnahme ausgedruckt.



Wir können den Code auch immer wieder versuchen, bis er erfolgreich ist.



2) Die zweite Art des Wiederholens besteht darin, in Abständen erneut zu versuchen. Der folgende Code bedeutet, alle 2 Sekunden, 7 Sekunden oder 10 Sekunden erneut zu versuchen. Versuche es auf 10 Sekunden erneut. Wenn die Ausführung nicht erfolgreich ist, beenden Sie den erneuten Versuch.



Wir können es auch in Abständen erneut versuchen, bis der Versuch erfolgreich ist. Dies erfordert die Berechnung einer Funktion.



Der obige Code bezieht sich auf die Potenzretry von indirekt 2. Wenn zum Beispiel die Ausführung fehlschlägt, wird das erste Mal in Abständen von 2 Sekunden erneut versucht, das zweite Mal in Abstanden von 4 Sekunden und das dritte Mal in Abständen von 8 Sekunden......... Und so weiter. Bis die Ausführung erfolgreich ist.



Epilog


Hinweis: Die Ausnahmetypen im obigen Code-Handle sollten entsprechend der tatsächlichen Situation in Ihrem Projekt ausgefüllt werden. Nicht alle Ausnahmen erfordern einen erneuten Versuch.

Der Ausnahmetyp ist die Basisklasse für alle Ausnahmen. Es ist am besten, dies nicht in den Griff zu füllen, sonst hat es sehr ernste Konsequenzen.














Vorhergehend:. Der Rückgabewert der PayPal-IPN war schon immer UNGÜLTIG
Nächster:C# Verwendung von Yield-Schlüsselwörtern
Veröffentlicht am 29.05.2019 09:17:54 |
Ich habe den Retry-Mechanismus selbst in AOP implementiert und am Ende festgestellt, dass die Polly-Bibliothek meine Bedürfnisse erfüllen kann, aber meine Funktion ist bereits implementiert, und ich beziehe mich auf eine Drittanbieter-Bibliothek, die möglicherweise nutzlosen Code enthält, die mein System nicht optimieren kann, sodass sie vorerst nicht nützlich ist.

Angehängt ist mein Code:



Wenn ich Zeit habe, schaue ich mir auch Polly an.
Veröffentlicht am 29.05.2019 09:22:01 |
Xiao Zhaozha Veröffentlicht am 29.5.2019 09:17
Ich habe den Retry-Mechanismus selbst in aop implementiert, und am Ende habe ich festgestellt, dass die Polly-Bibliothek meine Bedürfnisse erfüllen kann, aber meine Funktion ist umgesetzt, und die Einführung ...

Es ist nichts falsch daran, solche kleinen Bedürfnisse selbst zu erfüllen
Und du solltest auf das nächste Mal warten, um es erneut zu versuchen
Veröffentlicht am 29.05.2019 09:29:22 |
Winde, veröffentlicht am 29.05.2019 09:22 Uhr
Es ist nichts falsch daran, solche kleinen Bedürfnisse selbst zu erfüllen
Und solltest du bis zum nächsten Mal warten, um es erneut zu versuchen?

Nein, die Ausnahme muss durch Nebenläufigkeit, Dateneinfügung, Aktualisierung und Löschung verursacht werden, aber es muss eine Ausnahme geben, die erfolgreich ausgeführt wird, ....... Der weggelassene Code umschließt die Transaktion, und die Ausnahme wird automatisch zurückgerollt. Beim zweiten Versuch ist der Konflikt weg, also habe ich keine Wartezeit festgelegt.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com