Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 22130|Antwoord: 3

[Frame] . .NET-veerkracht en tijdelijke falen omgaan met Polly-hertrystrategie

[Link kopiëren]
Geplaatst op 28-05-2019 23:54:53 | | | |
Dit bericht is voor het laatst bewerkt door Kongcida op 29-5-2019 11:16

inleiding
In een project zullen er problemen zijn met de uitvoering van het project door oncontroleerbare redenen. Bijvoorbeeld een serverstoring, een servicecrash, netwerkstoring, enzovoort. Als we enkele herhaalbare fouten tegenkomen, kunnen we Polly gebruiken —— . .NET elastische en tijdelijke foutafhandelingsbibliotheken. Officieel websiteadres van het project (De hyperlink-login is zichtbaar.)。 Vandaag zal dit artikel Polly's slechte herkansingsstrategie documenteren.


Omgeving & Hulpmiddelen


>VS 2017
>Windows 10-systeem


Sms


1: Maak een nieuwe consoleapplicatie aan.

2: Citeer Polly. Beschikbaar voor download in het NuGet-pakket

3: Plak de code



4: F6 genereert. Zoek vervolgens het gegenereerde .exe-bestand onder de debugmap – > dubbelklik om het uit te voeren.



Je ziet het uitvoerbericht: Drie keer opnieuw geprobeerd.

Wanneer F5 debuggt, zie je ook dat deze methode al drie keer is toegepast.


Polly's herkansingsstrategie wordt uitvoerig uitgelegd

1: Uitzonderingstype


In deze code bevat de :handle het uitzonderingstype dat opnieuw geprobeerd moet worden. Dat wil zeggen, wanneer de uitgevoerde code een specifieke uitzondering produceert, wordt de retry-functie uitgevoerd. Anders wordt er geen herpoging uitgevoerd. Omdat sommige uitzonderingen geen herpogingspoging vereisen.

Natuurlijk kunnen we hier een aantal specifieke uitzonderingstypen invullen om opnieuw te proberen.



De DivideByZeroException vertegenwoordigt hier een uitzondering die probeert te delen door nul.
SqlException geeft een uitzondering aan die wordt geactiveerd wanneer SQL Server een foutmelding of waarschuwing geeft. Bijvoorbeeld, databaseverbinding mislukt, SQL-uitvoeringsfout, enzovoort.
SmtpException duidt op een uitzondering die door de postdienst is geïntroduceerd. Bijvoorbeeld, het verzenden mislukte, de netwerkverbinding faalde en de e-mailaccountinformatie was abnormaal.

Voor specifieke uitzonderingstypes, raadpleeg de officiële documentatie van Microsoft:



2: Type herpoging

1) Het eerste type herpoging is een direct gegeven aantal herkansingen. De volgende code wordt slechts 3 keer opnieuw geprobeerd.

We kunnen de relevante acties aanroepen die bij elke herpoging worden uitgevoerd. De volgende code volgt later in een andere opdracht. Bij het uitvoeren van een herpoging worden het aantal herpogingen en de reden voor de uitzondering afgedrukt.



We kunnen de code ook blijven herhalen totdat het lukt.



2) Het tweede type herhaling is om het op intervallen opnieuw te proberen. De volgende code betekent dat je elke 2 seconden, 7 seconden of 10 seconden opnieuw moet proberen. Probeer het opnieuw tot 10 seconden. Als de uitvoering niet succesvol is, beëindig dan de herkansing.



We kunnen het ook opnieuw proberen op intervallen totdat de herhaling succesvol is. Dit vereist de berekening van een functie.



De bovenstaande code verwijst naar de machtsretry van indirect 2. Als de uitvoering bijvoorbeeld mislukt, wordt de eerste keer opnieuw geprobeerd met intervallen van 2 seconden, de tweede keer met intervallen van 4 seconden, en de derde keer opnieuw geprobeerd met intervallen van 8 seconden......... En zo verder. Totdat de uitvoering succesvol is.



Epiloog


Opmerking: De uitzonderingstypen in de bovenstaande code Handle moeten worden ingevuld volgens de werkelijke situatie in je project. Niet alle uitzonderingen vereisen een herkansing.

Het uitzonderingstype is de basisklasse voor alle uitzonderingen. Het is het beste om dit niet in het handvat te vullen, anders heeft het zeer ernstige gevolgen.














Vorig:. Netintegratie PayPal IPN retourwaarde is altijd ONGELDIG geweest
Volgend:C# Gebruik van yield-zoekwoorden
Geplaatst op 29-05-2019 09:17:54 |
Ik heb het herkansingsmechanisme zelf geïmplementeerd in AOP, en uiteindelijk ontdekte ik dat de Polly-bibliotheek aan mijn behoeften kan voldoen, maar mijn functie is geïmplementeerd en ik verwijs naar een bibliotheek van derden, die mogelijk nutteloze code bevat, die mijn systeem niet kan optimaliseren, dus voorlopig niet bruikbaar.

Bijgevoegd is mijn code:



Als ik tijd heb, zal ik ook Polly onderzoeken
Geplaatst op 29-05-2019 09:22:01 |
Xiao Zhaozha Geplaatst op 29-5-2019 09:17
Ik heb het herkansingsmechanisme zelf geïmplementeerd in aop, en uiteindelijk ontdekte ik dat de Polly-bibliotheek aan mijn behoeften kon voldoen, maar mijn functie is geïmplementeerd en de introductie ...

Er is niets mis mee om zelf kleine behoeften te doen
En je moet wachten tot de volgende keer om het opnieuw te proberen
Geplaatst op 29-05-2019 09:29:22 |
Winden geplaatst op 29-5-2019 09:22
Er is niets mis mee om zelf kleine behoeften te doen
En moet je wachten tot de volgende keer om het opnieuw te proberen?

Nee, de uitzondering moet worden veroorzaakt door gelijktijdigheid, gegevensinvoeging, update en verwijderingsconflicten, maar er moet er wel één zijn die succesvol wordt uitgevoerd, ....... De weggelaten code wrapt de transactie en de uitzondering wordt automatisch teruggerold. Bij de tweede poging is het conflict weg, dus ik heb geen wachttijd ingesteld.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com