This module includes a feign Target and Client adapter to take advantage of Ribbon.
Conventions
This integration relies on the Feign Target.url() being encoded like https://myAppProd where myAppProd is the ribbon client or loadbalancer name and myAppProd.ribbon.listOfServers configuration is set.
RibbonClient
Adding RibbonClient overrides URL resolution of Feign's client, adding smart routing and resiliency capabilities provided by Ribbon.
Usage
instead of
MyService api = Feign.builder().target(MyService.class, "https://myAppProd-1234567890.us-east-1.elb.amazonaws.com");
do
MyService api = Feign.builder().client(RibbonClient.create()).target(MyService.class, "https://myAppProd");
LoadBalancingTarget
Using or extending LoadBalancingTarget will enable dynamic url discovery via ribbon including incrementing server request counts.
Usage
instead of
MyService api = Feign.builder().target(MyService.class, "https://myAppProd-1234567890.us-east-1.elb.amazonaws.com");
do
MyService api = Feign.builder().target(LoadBalancingTarget.create(MyService.class, "https://myAppProd"));