← Bütün Patternlər
🔁

Retry Pattern

Müvəqqəti (transient) xətalar zamanı istəyi avtomatik yenidən cəhd etmək — istifadəçi heç xəbər tutmur.

🎯
Nə üçün lazımdır?

Şəbəkədə anlıq qırılmalar (packet loss), servis restart-ları normal haldır. İlk xətada dərhal ERROR vermək əvəzinə yenidən cəhd etmək lazımdır.

Backoff Strategiyaları

Fixed: Hər dəfə 2s gözlə. Exponential: 1s, 2s, 4s, 8s. Jitter: Random əlavə — thundering herd-dən qoruyur.

🛠️
Populyar alətlər

Resilience4j @Retry, Spring Retry, Polly (.NET), Tenacity (Python).

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

#1 ➡️ Request → Service B ❌ 503
⏳ Gözləmə... (Exponential Backoff — 2 san)
#2 ➡️ Request → Service B ✅ 200 OK
🎉 İstifadəçi heç xəta hiss etmədi!
JAVA

Kod Nümunəsi — Resilience4j

PaymentService.java
@Service
public class PaymentService {

    @Retry(name = "paymentRetry", fallbackMethod = "paymentFailed")
    public PaymentResult processPayment(PaymentRequest req) {
        // Bu xəta versə, avtomatik yenidən cəhd olunacaq
        return paymentGateway.charge(req);
    }

    // Bütün cəhdlər uğursuz olduqda
    public PaymentResult paymentFailed(PaymentRequest req, Exception ex) {
        return new PaymentResult("FAILED",
            "Ödəniş sistemi müvəqqəti əlçatmazdır");
    }
}
application.yml
resilience4j:
  retry:
    instances:
      paymentRetry:
        maxAttempts: 3                     # Maks 3 cəhd
        waitDuration: 2s                   # Cəhdlər arası 2s
        enableExponentialBackoff: true      # Artan gözləmə
        exponentialBackoffMultiplier: 2    # 2s → 4s → 8s
        retryExceptions:
          - java.net.ConnectException     # Yalnız network xətaları
          - java.net.SocketTimeoutException
✅ Üstünlükləri
  • Transient xətaları pərdə arxasında aradan qaldırır
  • İstifadəçi təcrübəsi pozulmur
  • Exponential backoff ilə servisi aşırı yükləmir
⚠️ Riskləri
  • İdempotent olmayan istəklərdə dublikat əməliyyat riski
  • Artıq retry DDoS effekti yarada bilər (Retry Storm)
  • Non-transient xətalarda mənasız retry vaxt itirir