Müvəqqəti (transient) xətalar zamanı istəyi avtomatik yenidən cəhd etmək — istifadəçi heç xəbər tutmur.
Şə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.
Fixed: Hər dəfə 2s gözlə. Exponential: 1s, 2s, 4s, 8s. Jitter: Random əlavə — thundering herd-dən qoruyur.
Resilience4j @Retry, Spring Retry, Polly (.NET), Tenacity (Python).
@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");
}
}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