Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 22130|Отговор: 3

[Кадър] . Устойчивост на .NET и стратегия за преходен провал при справяне с Polly retry

[Копирай линк]
Публикувано в 28.05.2019 г. 23:54:53 ч. | | | |
Този пост беше последно редактиран от Kongcida на 29.05.2019 г., 11:16

предговор
В даден проект ще има проблеми с работата му поради неконтролируеми причини. Например, повреда на сървър, срив на услуга, прекъсване на мрежата и т.н. Ако срещнем някои повторими грешки, можем да използваме Polly —— . .NET Elastic и Transient Fault Handling Libraries. Официален адрес на уебсайта на проекта (Входът към хиперлинк е видим.)。 Днес тази статия ще документира лошата стратегия на Поли за повторен опит.


Среда и инструменти


>VS 2017
>Система Windows 10


Текст


1: Създайте ново конзолно приложение.

2: Цитирайте Поли. Достъпно за изтегляне в пакета NuGet

3: Поставете кода



4: F6 генерира. След това намерете генерирания .exe файл под папката за дебъг – > двойно кликване, за да стартирате.



Можете да видите изходното съобщение: Опитано три пъти.

Когато F5 дебъгва, можете да видите, че този метод е използван три пъти.


Стратегията за повторен опит на Поли е обяснена подробно

1: Тип изключение


В този код :handle съдържа типа изключение, което трябва да бъде преразгледано. Тоест, когато изпълненият код създаде конкретно изключение, функцията за повторно опитване се изпълнява. В противен случай няма да се прави повторен опит. Защото някои изключения не изискват повторен опит.

Разбира се, тук можем да попълним няколко конкретни типа изключения, които да опитаме отново.



Изключението DivideByZeroException тук представлява изключение, което се опитва да дели на нула.
SqlException означава изключение, което се появява, когато Sql Server върне грешка или предупреждение. Например, повреда в базата данни, грешка при изпълнение на SQL и др.
SmtpException означава изключение, повдигнато от пощенската услуга. Например, изпращането се провали, мрежовата връзка се провали, а информацията за имейл акаунта беше ненормална.

За конкретни видове изключения, моля, вижте официалната документация на Microsoft:



2: Тип на повторен опит

1) Първият тип повторен опит е директен брой опити. Следващият код е изпробван само 3 пъти.

Можем да извикаме съответните действия, извършени при всяко повторно опитване, когато опитваме отново. Следващият код е още една поръчка по-късно. При повторен опит се отпечатват броят на повторните опити и причината за изключението.



Можем също да продължим да опитваме кода, докато не успее.



2) Вторият вид повторен опит е да се опитва отново на интервали. Следващият код означава да се опитва отново на всеки 2 секунди, 7 или 10 секунди. Опитай отново до 10 секунди. Ако изпълнението не е успешно, прекратете повторния опит.



Можем също да опитаме отново на интервали, докато повторният опит е успешен. Това изисква изчисляване на функция.



Горният код се отнася до повторното опитване на мощност на индиректен 2. Например, ако изпълнението се провали, първото ще се повтори на интервали от 2 секунди, второто – на интервали от 4 секунди, а третото – на интервали от 8 секунди......... И така нататък. Докато изпълнението не е успешно.



Епилог


Забележка: Типовете изключения в горния код Handle трябва да бъдат попълнени според реалната ситуация във вашия реален проект. Не всички изключения изискват повторен опит.

Типът изключение е базовият клас за всички изключения. Най-добре е да не го запълвате в дръжката, иначе ще има много сериозни последици.














Предишен:. Стойността за връщане на PayPal IPN при интернет интеграция винаги е била НЕВАЛИДНА
Следващ:C# Използване на ключови думи за доходност
Публикувано в 29.05.2019 г. 9:17:54 ч. |
Аз сам реализирах механизма за повторно опитване в AOP и в крайна сметка установих, че библиотеката Polly може да отговори на нуждите ми, но функцията ми вече е реализирана и говоря за библиотека на трета страна, която може да съдържа някакъв безполезен код, който не може да оптимизира системата ми, така че засега не е полезна.

Приложен е моят код:



Когато имам време, ще разгледам и Поли
Публикувано в 29.05.2019 г. 9:22:01 ч. |
Xiao Zhaozha Публикувано на 29.05.2019 09:17
Аз сам реализирах механизма за повторни опити в aop и накрая установих, че библиотеката на Polly може да отговори на нуждите ми, но функцията ми вече е реализирана, а въведението ...

Няма нищо лошо да се справиш с малки нужди сам.
И трябва да изчакате следващия път, за да опитате отново
Публикувано в 29.05.2019 г. 9:29:22 ч. |
Ветрове публикувани на 29.05.2019 09:22
Няма нищо лошо да се справиш с малки нужди сам.
И трябва ли да изчакате следващия път, за да опитате отново?

Не, изключението трябва да е причинено от конфликти между конкурентност, вмъкване на данни, актуализация и изтриване, но трябва да има такъв, който ще се изпълни успешно, ....... Пропуснатият код обвива транзакцията и изключението автоматично се връща назад. При втория опит конфликтът изчезва, затова не зададох време за изчакване.
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com