Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 22130|Odpowiedź: 3

[Klatka] . Strategia powtórek Polly – odporność na .NET i radzenie sobie z przejściowymi awariami

[Skopiuj link]
Opublikowano 28.05.2019 23:54:53 | | | |
Ten post został ostatnio edytowany przez Kongcida 29.05.2019 o 11:16

przedmowa
W projekcie pojawiają się problemy z jego funkcjonowaniem z powodu niekontrolowanych przyczyn. Na przykład awaria serwera, awaria usług, awaria sieci itd. W przypadku błędów możliwych do ponownego przetestowania możemy użyć Polly —— . .NET Elastyczne i Przejściowe Biblioteki Obsługi Błędów. Oficjalny adres strony internetowej projektu (Logowanie do linku jest widoczne.)。 Dziś ten artykuł przedstawi złą strategię powtórek Polly.


Środowisko i narzędzia


>VS 2017
>System Windows 10


Tekst


1: Stwórz nową aplikację konsolową.

2: Cytuję Polly. Dostępne do pobrania w pakiecie NuGet

3: Wklej kod



4: F6 generuje. Następnie znajdź wygenerowany plik .exe w folderze debug – > kliknij dwa razy, aby uruchomić.



Możesz zobaczyć komunikat wyjściowy: Próba powtórzona trzy razy.

Podczas debugowania w F5 można też zobaczyć, że ta metoda była stosowana trzy razy.


Strategia powtórek Polly jest szczegółowo wyjaśniona

1: Typ wyjątku


W tym kodzie uchwyt :handle zawiera typ wyjątku, który ma zostać powtórzony. To znaczy, gdy wykonany kod generuje określony wyjątek, funkcja retry jest wykonywana. W przeciwnym razie nie będzie wykonywana powtórka. Ponieważ niektóre wyjątki nie wymagają ponownej próby.

Oczywiście możemy tu wypełnić kilka konkretnych typów wyjątków, aby spróbować ponownie.



DivideByZeroException tutaj reprezentuje wyjątek, który próbuje podzielić przez zero.
SqlException oznacza wyjątek, który jest wywoływany, gdy SQL Server zwraca błąd lub ostrzeżenie. Na przykład awaria połączenia z bazą danych, błąd wykonania SQL itd.
SmtpException oznacza wyjątek zgłaszany przez usługę pocztową. Na przykład wysłanie się nie powiodło, połączenie sieciowe zawiodło, a informacje o kontach e-mail były nieprawidłowe.

Aby poznać konkretne typy wyjątków, zapoznaj się z oficjalną dokumentacją Microsoftu:



2: Typ próby powtórnej

1) Pierwszym typem powtórek jest bezpośrednia określona liczba prób. Poniższy kod jest powtarzany tylko 3 razy.

Możemy wywołać odpowiednie działania wykonane przy każdej powtórce podczas ponownej próby. Następujący kod to kolejne zlecenie później. Podczas ponownego próbowania wyświetlana jest liczba prób oraz powód wyjątku.



Możemy też kontynuować próby kodu, aż się powiedzie.



2) Drugim typem powtórek jest powtarzanie prób w odstępach czasu. Poniższy kod oznacza, że można powtarzać co 2 sekundy, 7 sekund lub 10 sekund. Spróbuj ponownie do 10 sekund. Jeśli wykonanie nie zakończy się sukcesem, zakończ próbę ponowną.



Możemy też próbować ponownie w odstępach czasu, aż powtórka zakończy się sukcesem. Wymaga to obliczenia funkcji.



Powyższy kod odnosi się do próby ponownego zasilania pośredniego 2. Na przykład, jeśli wykonanie się nie powiedzie, pierwsze próby zostaną powtórzone co 2 sekundy, drugie w odstępach po 4 sekundy, a trzecie w odstępach 8 sekund......... I tak dalej. Aż wykonanie zakończy się sukcesem.



Epilog


Uwaga: Typy wyjątków w powyższym kodzie Handle powinny być wypełnione zgodnie z rzeczywistą sytuacją w Twoim rzeczywistym projekcie. Nie wszystkie wyjątki wymagają ponownej próby.

Typ wyjątku to klasa bazowa dla wszystkich wyjątków. Najlepiej nie wypełniać tego uchwytu, bo inaczej będzie to miało bardzo poważne konsekwencje.














Poprzedni:. Integracja sieciowa PayPal IPN z powrotem wartości zwrotnej zawsze była NIEPRAWIDŁOWA
Następny:C# Użycie słów kluczowych yield
Opublikowano 29.05.2019 09:17:54 |
Sam zaimplementowałem mechanizm powtórek w AOP i ostatecznie okazało się, że biblioteka Polly spełnia moje potrzeby, ale moja funkcja została zaimplementowana i odwołuję się do biblioteki firm trzecich, która może zawierać bezużyteczny kod, który nie może zoptymalizować mojego systemu, więc na razie nie jest przydatna.

Załączam mój kod:



Kiedy będę miał czas, sprawdzę też Polly
Opublikowano 29.05.2019 09:22:01 |
Xiao Zhaozha Opublikowano 2019-5-29 09:17
Sam zaimplementowałem mechanizm powtórek w aop i ostatecznie okazało się, że biblioteka Polly spełnia moje potrzeby, ale moja funkcja została wdrożona, a wprowadzenie ...

Nie ma nic złego w tym, by samodzielnie robić takie drobne potrzeby
I powinieneś poczekać do następnego razu, żeby spróbować ponownie
Opublikowano 29.05.2019 09:29:22 |
Winds opublikowano 29.05.2019 09:22
Nie ma nic złego w tym, by samodzielnie robić takie drobne potrzeby
I czy poczekać na kolejny raz, żeby spróbować ponownie?

Nie, wyjątek musi być spowodowany konfliktami współbieżności, wstawianiem danych, aktualizacją i usuwaniem, ale musi istnieć taki, który wykona się pomyślnie, ....... Pominięty kod owija transakcję, a wyjątek zostanie automatycznie cofnięty. Przy drugiej próbie konflikt zniknął, więc nie ustawiłem czasu oczekiwania.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com