Polly ve .Net Core 3.0 Retry Pattern

Merhaba arkadaşlar, bugün kısa bir yazı olacak fakat güncel teknoloji gelişmeleri ve mimarilerinde yerini iyice almaya başlayan önemli bir open source kütüphaneden yani Polly’den bahsedeceğim. Sizlere polly ve .net core 3.0 kullanarak bir servis de retry yani yeniden deneme patternini anlatmaya çalışacağım. Polly network haberleşmesi sırasında bir çok patterni uygulamanızı sağlayan extension metodlar sunan bir kütüphanedir. Error, result handling, retry senaryoları, cache senaryoları gibi birçok alanda kullanılabilir.

Biz bu postta Polly ile retry pattern örneğini ve time out policy örneğini görmeye çalışacağız. Şimdi senaryo olarak istekleri alan bir servisimiz olsun ve arka tarafta isim döndüren başka bir apiye request atsın.

Fakat isim döndüren api de problemler olabilir, anlık cevap verememe durumları olabilir bu yüzden cevap alamadığı durumda 3 kere denesin . Buna ek olarak timeout durumunu handle etmek içinde eğer isteğe 20 saniye cevap alınamazsa polly hata döndürsün.
Evet senaryomuzu şimdi yazmaya başlayalım. Önce isim döndüren basit bi api endpoint hazırladım.

Name Api

Bizim servisimiz, https://localhost:44353/api/name url’i üzerinden isim döndürmektedir. Şimdi bunu kullanacak diğer apimizi yazalım.

Öncelikle nuget üzerinden Microsoft.Extensions.Http.Polly (kurduğum version 3.1.0) kuralım. Daha sonra startup da ilgili polly konfigürasyonumuzu yapalım.

Startup.cs

Burada retry seçeneği aşağıdaki gibi farklı bir strateji ile uygulanarak, istek aralarında ki süreler belirlenebilir. Fakat biz senaryomuz için üstteki kod bloğunu kullanacağız.

Örnek için istekleri alacağımız endpointi yazalım.

Polly Example Api

Evet arkadaşlar örneğimizi ben iki senaryoda denedim . ilk olarak isim servisini ayağa kaldırmadan istek attığımda 20 saniye bekleyip daha sonra excepiton döndüğünü ve isim servisindeki endpointte excepiton fırlatarak 3 kez denediğini test ettim.

Umarım faydalı olmuştur. Kalın sağlıcakla …

Kaynaklar

http://enesaysan.com/software/polly-ve-net-core-3-0-retry-pattern/
http://www.thepollyproject.org/
https://www.c-sharpcorner.com/article/using-retry-pattern-in-asp-net-core-via-polly/
Asp.Net Core HttpClientFactory + Polly
https://www.telerik.com/blogs/using-polly-for-net-resilience-and-transient-fault-handling-with-net-core

Software Developer at Sosyopix

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store