Skip to main content
Circuit Breaker, bir bankanın istikrarsız olduğunu tespit ettiğinde o bankayı geçici olarak yönlendirme havuzundan çıkarır. Banka düzelene kadar işlemler diğer konnektörlere yönlendirilir.

Neden gerekli?

Akıllı Yönlendirme her isteği gerçek zamanlı değerlendirir. Ama bir banka sürekli hata veriyorsa her seferinde yeniden denemek:
  • Müşteri için gecikme yaratır (5 sn timeout sonrası fallback)
  • Toplam başarı oranını düşürür
  • Hatalı bankayı meşgul eder
Circuit Breaker bu döngüyü kırar — hatalı banka belirli bir süre devre dışı bırakılır.

Üç hal

HalDavranış
ClosedBanka sağlıklı, normal yönlendirme
OpenBanka devre dışı, hiçbir istek atılmaz
HalfOpenBekleme süresi sonunda küçük bir test trafiği gönderilir

Konfigürasyon

Circuit Breaker, konnektör HTTP istemcisi üzerinde Polly kütüphanesi ile uygulanmıştır (Infrastructure/Http/PollyPolicies.cs). Mevcut varsayılanlar:
ParametreVarsayılanAçıklama
exceptionsAllowedBeforeBreaking3Bu sayıda ardışık geçici HTTP hatası → Open
durationOfBreakInSeconds30 snOpen kalma süresi (sonra HalfOpen’a geçer)
HalfOpen test trafiği1 istekTek başarılı istek → Closed; başarısız → Open
Retry policy (ayrı)3 denemeExponential backoff (2^attempt saniye)
Timeout30 snİstek başına
Implementasyon Polly’nin basit CircuitBreakerAsync policy’sidir — exception count tabanlı (oran tabanlı değil). “Rolling pencere içinde %50 hata” gibi gelişmiş ölçümler AdvancedCircuitBreakerAsync’a geçişle yol haritasında.
Konnektör başına özelleştirme için: Konsol → Konnektörler → [Konfigürasyon] ekranı veya PUT /api/v1/connector-configurations/{id} endpoint’i.

Açılma kriteri

Bir konnektör HTTP istemcisi 3 ardışık geçici hata (5xx, timeout, network) verdiğinde Open’a geçer. 30 saniye boyunca o konnektöre çağrı yapılmaz; süre sonunda HalfOpen’a geçilir ve tek bir test isteği denenir.

Yarı-açık hal (HalfOpen)

Bekleme süresi dolunca breaker “HalfOpen” haline geçer. Sonraki birkaç istek test trafiği olarak banka ile yeniden denenir:
  • Test başarılı → Closed haline döner, normal çalışmaya devam eder.
  • Test başarısız → tekrar Open haline döner.

İstek üzerindeki etkisi

Banka Open haldeyken o bankaya yönlendirilecek istekler:
  • Routing kuralında fallback_connector_config_id tanımlanmışsa → doğrudan fallback konnektöre gider, birinci konnektör hiç denenmez (timeout süresi kaybedilmez)
  • Fallback yoksa → işlem connector_unavailable koduyla reddedilir
  • Karşılayan başka kural varsa engine onu değerlendirmeye devam eder

Sağlık endpoint’i

Konnektörün anlık sağlık durumunu API üzerinden kontrol edebilirsiniz:
curl https://vpos.payven.com.tr/api/v1/connector-configurations/{id}/health \
  -H "Authorization: Bearer $PAYVEN_TOKEN"
Yanıt; mevcut hali (closed/open/half_open), son rolling penceredeki başarı/hata oranını, ortalama yanıt süresini ve son durum değişiklik zamanını döner.

İzleme

Breaker durumunu konsoldaki Konnektör Sağlık Paneli ekranından takip edebilirsiniz:
  • Mevcut hali (Closed / Open / HalfOpen)
  • Son rolling window’daki başarı/hata oranı
  • Ortalama yanıt süresi
  • Hangi tarihte Open’a düştüğü
  • Spark-line trend grafikleri

Yol haritası

  • Connector health webhook event’leri (connector.circuit.opened / closed) — şu an public webhook event listesinde yok, planlamada
  • Konnektör başına özel circuit breaker konfig UI’ı (varsayılan ayarlar yerine merchant-spesifik)
  • Manuel devreden çıkarma — bakım pencereleri için konnektörü manuel Open’a alma
  • Bağlantı testleri — konfigürasyon sırasında Test Et ile sağlık doğrulama