In distributed systems, traditional 2-Phase Commit (2PC) transactions fail to scale across independent databases. Learn how Orchestration and Choreography-based Saga patterns maintain eventual consistency with compensating transactions.
1. Resilience4j Circuit Breaker in Spring Boot 3
@Service
public class PaymentGatewayClient {
@CircuitBreaker(name = "paymentService", fallbackMethod = "paymentFallback")
@Retry(name = "paymentService")
public PaymentResponse processPayment(PaymentRequest request) {
return restTemplate.postForObject("/payments", request, PaymentResponse.class);
}
public PaymentResponse paymentFallback(PaymentRequest request, Throwable t) {
log.warn("Payment service unavailable! Triggering graceful fallback. Cause: {}", t.getMessage());
return new PaymentResponse("PENDING_RETRY", "Payment queued for offline batch processing.");
}
}