Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22130|Vastaus: 3

[Kehys] . .NET-resilienssi ja tilapäisten vikojen käsittely Pollyn uudelleenyrittämisstrategia

[Kopioi linkki]
Julkaistu 28.5.2019 23.54.53 | | | |
Tätä julkaisua muokasi viimeksi Kongcida 29.5.2019 klo 11:16

johdanto
Projektissa ilmenee ongelmia projektin toiminnassa hallitsemattomista syistä. Esimerkiksi palvelinvika, palvelun kaatuminen, verkon katkos jne. Jos kohtaamme joitakin uusittavia virheitä, voimme käyttää Polly —— . .NET:n elastiset ja tilapäiset vikojen käsittelykirjastot. Projektin virallinen verkkosivuston osoite (Hyperlinkin kirjautuminen on näkyvissä.)。 Tänään tämä artikkeli dokumentoi Pollyn huonon uudelleenyrittämisstrategian.


Ympäristö ja työkalut


>VS 2017
>Windows 10 -järjestelmä


Tekstiviesti


1: Luo uusi konsolisovellus.

2: Lainaa Pollya. Ladattavissa NuGet-paketissa

3: Liitä koodi



4: F6 generoi. Etsi sitten luotu .exe-tiedosto debug-kansion alta – > kaksoisklikkaa käynnistääksesi.



Näet ulostuloviestin: Kokeiltu uudelleen kolme kertaa.

Kun F5 debuggaa, näet myös, että tätä menetelmää on käytetty kolme kertaa.


Pollyn uusintayritysstrategia selitetään yksityiskohtaisesti

1: Poikkeustyyppi


Tässä koodissa :handle sisältää poikkeustyypin, jota kokeillaan uudelleen. Eli kun suoritettu koodi tuottaa tietyn poikkeuksen, uudelleentry-funktio suoritetaan. Muussa tapauksessa uusintayritystä ei tehdä. Koska jotkut poikkeukset eivät vaadi uudelleenyritystä.

Tietenkin voimme täyttää useita erityisiä poikkeustyyppejä tässä, jotta voimme yrittää uudelleen.



DivideByZeroException edustaa tässä poikkeusta, joka yrittää jakaa nollalla.
SqlException tarkoittaa poikkeusta, joka nousee, kun Sql Server palauttaa virheen tai varoituksen. Esimerkiksi tietokantayhteyden epäonnistuminen, SQL-suoritusvirhe jne.
SmtpException tarkoittaa postipalvelun esittämää poikkeusta. Esimerkiksi lähetys epäonnistui, verkkoyhteys epäonnistui ja sähköpostitilin tiedot olivat epänormaalit.

Erityisistä poikkeustyypeistä löytyy Microsoftin virallisesta dokumentaatiosta:



2: Uusintayritystyyppi

1) Ensimmäinen uusintayritystyyppi on suoraan annettu määrä yrityksiä. Seuraavaa koodia on kokeiltu vain kolme kertaa uudelleen.

Voimme kutsua kunkin uudelleenyrityksen aikana suoritetut asiaankuuluvat toiminnot uudelleenyrittäessä. Seuraava koodi on toinen tilaus myöhemmin. Uusintayritystä tehdessä tulostetaan uusintayritysten määrä ja poikkeuksen syy.



Voimme myös pitää koodin yrittämässä uudelleen, kunnes se onnistuu.



2) Toinen uudelleenyrittämisen tyyppi on yrittää uudelleen tietyin väliajoin. Seuraava koodi tarkoittaa uudelleenyrittämistä 2, 7 tai 10 sekunnin välein. Yritä uudelleen 10 sekuntiin. Jos suoritus ei onnistu, lopeta uusintayritys.



Voimme myös yrittää uudelleen ajoittain, kunnes uusintayritys onnistuu. Tämä vaatii funktion laskemisen.



Yllä oleva koodi viittaa epäsuoran 2:n potenssiuudelleenyrittämiseen. Esimerkiksi, jos suoritus epäonnistuu, ensimmäinen kerta yritetään uudelleen 2 sekunnin välein, toinen kerta 4 sekunnin välein ja kolmas kerta 8 sekunnin välein......... Ja niin edelleen. Kunnes teloitus onnistuu.



Epilogi


Huomautus: Yllä olevan koodin Handle-poikkeustyypit tulisi täyttää projektisi todellisen tilanteen mukaan. Kaikki poikkeukset eivät vaadi uudelleenyritystä.

Poikkeustyyppi on perusluokka kaikille poikkeuksille. On parasta olla täyttämättä tätä kahvaan, muuten siitä seuraa hyvin vakavia seurauksia.














Edellinen:. Verkkointegraatio PayPal IPN:n palautusarvo on aina ollut VIRHEELLINEN
Seuraava:C# Tuottoavainsanojen käyttö
Julkaistu 29.5.2019 9.17.54 |
Toteutin uudelleenyrittämismekanismin itse AOP:ssa, ja lopulta huomasin, että Polly-kirjasto pystyy täyttämään tarpeeni, mutta toimintoni on toteutettu, ja viittaan kolmannen osapuolen kirjastoon, jossa saattaa olla turhaa koodia, joka ei voi optimoida järjestelmääni, joten se ei ole tällä hetkellä hyödyllinen.

Liitteenä on koodini:



Kun minulla on aikaa, tutustun myös Pollyyn
Julkaistu 29.5.2019 9.22.01 |
Xiao Zhaozha Julkaistu 29.5.2019 klo 09:17
Toteutin uudelleenyrittämismekanismin itse aop:ssa, ja lopulta huomasin, että Polly-kirjasto pystyi täyttämään tarpeeni, mutta oma toimintoni on toteutettu, ja johdanto ...

Ei ole mitään väärää siinä, että hoitaa tällaiset pienet tarpeet itse
Ja sinun pitäisi odottaa seuraavaa kertaa ennen kuin yrität uudelleen
Julkaistu 29.5.2019 9.29.22 |
Winds julkaistu 29.5.2019 klo 09:22
Ei ole mitään väärää siinä, että hoitaa tällaiset pienet tarpeet itse
Pitäisikö sinun odottaa seuraavaan kertaan ennen kuin yrität uudelleen?

Ei, poikkeus täytyy johtua samanaikaisuudesta, tiedon lisäämisestä, päivityksestä ja poisto-ristiriidoista, mutta jokin on suoritettava onnistuneesti, ....... Pois jätetty koodi käärii transaktion, ja poikkeus perääntyy automaattisesti. Toisella uusintayrityksellä ristiriita on poissa, joten en asettanut odotusaikaa.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com