Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22130|Odpoveď: 3

[Rám] . .NET odolnosť a riešenie prechodných zlyhaní Pollyho stratégia opakovaných pokusov

[Kopírovať odkaz]
Zverejnené 28. 5. 2019 23:54:53 | | | |
Tento príspevok naposledy upravil Kongcida 29.5.2019 o 11:16

predhovor
V projekte sa vyskytnú problémy s prevádzkou projektu kvôli nekontrolovateľným dôvodom. Napríklad zlyhanie servera, pád služby, výpadok siete a podobne. Ak narazíme na chyby, ktoré sa dajú opakovať, môžeme použiť Polly —— . .NET elastické a prechodné knižnice na spracovanie chýb. Oficiálna adresa webovej stránky projektu (Prihlásenie na hypertextový odkaz je viditeľné.)。 Dnes tento článok zdokumentuje Pollyinu zlú stratégiu opakovaného pokusu.


Prostredie a nástroje


>VS 2017
>Systém Windows 10


Text


1: Vytvoriť novú konzolovú aplikáciu.

2: Citujem Polly. Dostupné na stiahnutie v balíku NuGet

3: Vložte kód



4: F6 generuje. Potom nájdite vygenerovaný .exe súbor v debug priečinku – > dvojitým kliknutím spustíte.



Môžete vidieť výstupnú správu: Skúšané trikrát.

Keď F5 ladí, môžete tiež vidieť, že táto metóda bola použitá trikrát.


Pollyina stratégia opakovania je podrobne vysvetlená

1: Typ výnimky


V tomto kóde obsahuje :handle typ výnimky, ktorý sa má skúšať znova. To znamená, že keď vykonaný kód vytvorí konkrétnu výnimku, vykoná sa funkcia opakovaného pokusu. Inak sa žiadne opakovanie nevykoná. Pretože niektoré výnimky nevyžadujú opakovanie.

Samozrejme, môžeme tu vyplniť niekoľko špecifických typov výnimiek na opätovné skúšanie.



DivideByZeroException tu predstavuje výnimku, ktorá sa snaží deliť nulou.
SqlException označuje výnimku, ktorá sa vyvolá, keď SQL Server vráti chybu alebo varovanie. Napríklad zlyhanie pripojenia k databáze, chyba pri vykonávaní SQL a podobne.
SmtpException označuje výnimku vytvorenú poštovou službou. Napríklad odosielanie zlyhalo, sieťové pripojenie zlyhalo a informácie o e-mailovom účte boli abnormálne.

Pre konkrétne typy výnimiek si pozrite oficiálnu dokumentáciu Microsoftu:



2: Typ opätovného pokusu

1) Prvým typom opakovania je priamy počet opakovaní. Nasledujúci kód sa skúša len trikrát.

Relevantné akcie vykonané pri každom opakovanom pokuse môžeme vyvolať pri opätovnom pokuse. Nasledujúci kód je ďalšia objednávka neskôr. Pri opakovanom pokuse sa vytlačí počet pokusov a dôvod výnimky.



Môžeme tiež nechať kód opakovane skúšať, kým neuspeje.



2) Druhým typom opakovaného pokusu je opakovanie v intervaloch. Nasledujúci kód znamená opakovať každé 2 sekundy, 7 sekúnd alebo 10 sekúnd. Skús znova na 10 sekúnd. Ak vykonanie nie je úspešné, ukončite opakovaný pokus.



Môžeme to tiež skúšať znova v intervaloch, kým nebude pokus úspešný. To si vyžaduje výpočet funkcie.



Vyššie uvedený kód sa týka opätovného pokusu o napájanie nepriameho čísla 2. Napríklad, ak vykonanie zlyhá, prvý pokus sa opakuje v intervaloch 2 sekúnd, druhý v intervaloch po 4 sekundách a tretíkrát v intervaloch po 8 sekúnd......... A tak ďalej. Až kým poprava nebude úspešná.



Epilóg


Poznámka: Typy výnimiek v vyššie uvedenom kóde Handle by mali byť vyplnené podľa skutočnej situácie vo vašom projekte. Nie všetky výnimky vyžadujú opakovanie.

Typ výnimky je základná trieda pre všetky výnimky. Najlepšie je to do kľučky nevyplňovať, inak to bude mať veľmi vážne následky.














Predchádzajúci:. Sieťová integrácia PayPal IPN vrátená hodnota bola vždy NEPLATNÁ
Budúci:C# Použitie kľúčových slov yield
Zverejnené 29. 5. 2019 9:17:54 |
Mechanizmus opakovania som implementoval sám v AOP a nakoniec som zistil, že knižnica Polly splní moje potreby, ale moja funkcia bola implementovaná a odkazujem na knižnicu tretej strany, ktorá môže obsahovať nejaký zbytočný kód, ktorý nedokáže optimalizovať môj systém, takže zatiaľ nie je užitočná.

Priložený je môj kód:



Keď budem mať čas, pozriem sa aj na Polly
Zverejnené 29. 5. 2019 9:22:01 |
Xiao Zhaozha Zverejnené 29.5.2019 09:17
Mechanizmus opätovného skúšania som implementoval sám v AOP a nakoniec som zistil, že knižnica Polly by mohla splniť moje potreby, ale moja funkcia bola implementovaná a úvod ...

Nie je nič zlé na tom, robiť takéto malé potreby sám
A mali by ste počkať na ďalší pokus, aby ste to mohli skúsiť znova
Zverejnené 29. 5. 2019 9:29:22 |
Winds zverejnené 29.5.2019 09:22
Nie je nič zlé na tom, robiť takéto malé potreby sám
A mali by ste počkať na ďalší pokus, aby ste to skúsili znova?

Nie, výnimka musí byť spôsobená konfliktmi súbežnosti, vkladania dát, aktualizácie a vymazania, ale musí existovať nejaký, ktorý sa úspešne vykoná, ....... Vynechaný kód ukončí transakciu a výnimka sa automaticky vráti späť. Pri druhom pokuse konflikt zmizol, takže som si nenastavil čakaciu dobu.
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com