✅ Use RestTemplate (if you're working with Spring Boot 2.x, but avoid for new projects).
✅ Implement OpenFeign (preferred for declarative REST calls).
✅ Understand WebClient (for non-blocking, reactive calls).
✅ Learn about RestClient (introduced in Spring 6, better than RestTemplate).
🎯 Goal: Be comfortable with making synchronous & asynchronous API calls.
✅ TimeOuts: Configure timeouts in Feign, WebClient, or RestTemplate.
✅ Retries: Implement automatic retry mechanisms using Resilience4j Retry or Feign’s built-in retry.
✅ Circuit Breaker: Implement Resilience4j CircuitBreaker to prevent cascading failures.
✅ Bulkhead Pattern: Limit concurrent calls to avoid overloading a service.
🎯 Goal: Ensure your services don’t fail catastrophically when dependencies are down.
✅ Error Handling: Implement ErrorDecoder in Feign to handle custom errors.
✅ Request Interceptors: Add authentication headers (JWT/OAuth2) in Feign.
✅ Load Balancing: Use Feign with Eureka and Ribbon (Ribbon is deprecated in Spring Cloud 2022+).
🎯 Goal: Build production-ready Feign clients with resilience and security.