Learn how to build resilient microservice communication with HTTP using Feign, Spring Cloud OpenFeign and Resilience4J.
Microservices are complex. People mostly talk about the benefits of using microservices. Independent deployments, horizontal scaling of services, better failure isolation, teams owning separate microservices.
We tend to forget about the difficulties and the disadvantages. One of the most critical problems with microservices is communication. How to achieve a reliable communication channel between the services so messages/requests are not lost. How to avoid overloading certain services to make sure they don’t crash.
I’m going to discuss these points in my course to provide you a guideline on implementing resilient HTTP communication between your services.
Among a lot of things, here’s a high-level overview of the curriculum:
- Feign request/response mappings using annotations
- Feign logging
- Base clients
- Request interceptors
- Customizing error handling
- Request timeout options and following redirects
- Async HTTP communication
- Exposing Dropwizard and Micrometer metrics
- Spring Cloud OpenFeign request/response mappings using annotations
- Maintainable error handling with Spring Cloud OpenFeign
- Eureka integration with Feign for service resolution
- Feign client fallbacks
- Error-based circuit breaking with Resilience4J
- Slowness-based circuit breaking with Resilience4J
- Exposing circuit breaker metrics to Actuator
- Cutting off traffic when request are taking too long using Resilience4J
- Client side load balancing to multiple service instances
- Integration testing Feign clients
- Circuit breaking integration testing
- Client side load balancing integration testing