Найти в Дзене

Гарантированная доставка данных в .NET с Polly

Гарантированная доставка данных в .NET с Polly Как на практике внедрить Polly для гарантированной доставки данных в .NET и повысить отказоустойчивость интеграций с внешними сервисами, на примере работы с ЕРИР. Разбор реально боевого кейса МТС с ретраями, MediatR и устойчивостью к сетевым сбоям. 🟢 Показан реальный кейс ОРД «МедиаСкаут», который обязан надёжно и вовремя отправлять данные в ЕРИР под риском штрафов, поэтому ретраи — не «опция», а бизнес‑критичная необходимость. 👉 Автор выносит конфигурацию Retry‑стратегий Polly в отдельные классы, наследуемые от RetryStrategyOptions, чтобы не раздувать composition root и централизовать логику обработки ошибок. ⚡️ Настроены ретраи с нарастающей задержкой (от минут до часов) и фильтрацией по HTTP‑кодам и типам исключений (HttpRequestException, TimeoutException и т.п.), чтобы не ретраить бессмысленные ошибки. 🟣 Polly интегрируется в MediatR через IPipelineBehavior<,>, а сами запросы/команды помечаются интерфейсом IResiliencePipeline с

Гарантированная доставка данных в .NET с Polly

Как на практике внедрить Polly для гарантированной доставки данных в .NET и повысить отказоустойчивость интеграций с внешними сервисами, на примере работы с ЕРИР. Разбор реально боевого кейса МТС с ретраями, MediatR и устойчивостью к сетевым сбоям.

🟢 Показан реальный кейс ОРД «МедиаСкаут», который обязан надёжно и вовремя отправлять данные в ЕРИР под риском штрафов, поэтому ретраи — не «опция», а бизнес‑критичная необходимость.

👉 Автор выносит конфигурацию Retry‑стратегий Polly в отдельные классы, наследуемые от RetryStrategyOptions, чтобы не раздувать composition root и централизовать логику обработки ошибок.

⚡️ Настроены ретраи с нарастающей задержкой (от минут до часов) и фильтрацией по HTTP‑кодам и типам исключений (HttpRequestException, TimeoutException и т.п.), чтобы не ретраить бессмысленные ошибки.

🟣 Polly интегрируется в MediatR через IPipelineBehavior<,>, а сами запросы/команды помечаются интерфейсом IResiliencePipeline с именем нужного пайплайна — это даёт точечное включение устойчивости там, где она реально нужна.

✅ В итоге команда получает более стабильную систему, простое масштабирование стратегий повторов и удобное добавление resilience‑политик к новым запросам без переписывания бизнес‑логики.

Статья: https://habr.com/ru/companies/ru_mts/articles/966444/

a State of .NET | Подписаться