Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 22130|Відповідь: 3

[Кадр] . Стійкість .NET та тимчасова несправність у роботі з повторними спробами Polly

[Копіювати посилання]
Опубліковано 28.05.2019 23:54:53 | | | |
Цей допис востаннє відредаговано Kongcida 2019-5-29 11:16

Передмова
У проєкті виникають проблеми з роботою проєкту з неконтрольованих причин. Наприклад, відмова сервера, збій сервісу, збій мережі тощо. Зіткнувшись із помилками, які можна повторити, ми можемо використати Polly —— . Бібліотеки .NET Еластичної та Тимчасової обробки несправностей. Офіційна адреса сайту проєкту (Вхід за гіперпосиланням видно.)。 Сьогодні ця стаття задокументує погану стратегію повторних спроб Поллі.


Середовище та інструменти


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


Текст


1: Створити новий консольний додаток.

2: Цитата Поллі. Доступно для завантаження у пакеті NuGet

3: Вставити код



4: F6 генерує. Потім знайдіть згенерований .exe файл у папці налагодження — > подвійний клік для запуску.



Ви можете побачити вихідне повідомлення: Повторено тричі.

Коли F5 відлагоджує, можна побачити, що цей метод виконували тричі.


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

1: Тип винятку


У цьому коді :handle містить тип виключення, який потрібно повторно перевірити. Тобто, коли виконаний код створює певний виняток, виконується функція повторного тестування. Інакше повторна спроба не проводиться. Тому що деякі винятки не потребують повторної спроби.

Звісно, тут можна заповнити кілька конкретних типів винятків для повторної спроби.



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

Для конкретних типів винятків, будь ласка, зверніться до офіційної документації Microsoft:



2: Повторний тип спроби

1) Перший тип повторної спроби — це пряма задана кількість повторень. Наступний код повторюється лише тричі.

Ми можемо викликати відповідні дії, виконані при кожній повторній спробі. Наступний код — ще одне замовлення пізніше. Під час повторної спроби друкуються кількість повторних спроб і причина винятку.



Ми також можемо продовжувати повторні спроби коду, поки він не стане успішним.



2) Другий тип повторної спроби — це повторні спроби з інтервалами. Наступний код означає повторювати кожні 2, 7 або 10 секунд. Спробуйте ще раз на 10 секунд. Якщо виконання не вдалося — припинити повторну спробу.



Ми також можемо спробувати знову з інтервалами, поки повторна спроба не буде успішною. Це вимагає обчислення функції.



Наведений вище код стосується повторної спроби потужності непрямого 2. Наприклад, якщо виконання не вдається, перший раз повторюють з інтервалом у 2 секунди, другий — з інтервалом у 4 секунди, а третій — з інтервалом у 8 секунд......... І так далі. Поки виконання не буде успішним.



Епілог


Примітка: Типи винятків у наведеному вище кодовому дескрипті слід заповнити відповідно до реальної ситуації у вашому конкретному проєкті. Не всі винятки потребують повторного перегляду.

Тип винятку є базовим класом для всіх винятків. Краще не заповнювати це в ручку, інакше це матиме дуже серйозні наслідки.














Попередній:. Інтеграція мережі PayPal IPN повернення завжди була НЕДІЙСНОЮ
Наступний:C# Використання ключових слів доходу
Опубліковано 29.05.2019 09:17:54 |
Я сам реалізував механізм повторних спроб в AOP, і врешті-решт виявив, що бібліотека Polly може задовольнити мої потреби, але моя функція вже реалізована, і я маю на увазі сторонню бібліотеку, яка може містити якийсь марний код, що не може оптимізувати мою систему, тому наразі вона не корисна.

Додано мій код:



Коли матиму час, я також розгляну Поллі
Опубліковано 29.05.2019 09:22:01 |
Сяо Чжаочжа Опубліковано 2019-5-29 09:17
Я сам реалізував механізм повторного перегляду в aop, і врешті-решт виявив, що бібліотека Поллі може задовольнити мої потреби, але моя функція вже реалізована, а вступ ...

Немає нічого поганого в тому, щоб самостійно виконувати такі дрібні потреби
І варто почекати наступного разу, щоб спробувати знову
Опубліковано 29.05.2019 09:29:22 |
вітри опубліковані 2019-5-29 09:22
Немає нічого поганого в тому, щоб самостійно виконувати такі дрібні потреби
І чи варто чекати наступного разу, щоб спробувати знову?

Ні, виняток має бути спричинений конфліктами конкурентності, вставки даних, оновлення та видалення, але має бути конфлікт, який виконається успішно, я ....... Пропущений код загортає транзакцію, і виняток автоматично відкотується. При другій спробі конфлікт зник, тому я не встановив час очікування.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com