I would like to use Feign without client-side loadbalancer Ribbon because I don't want to run Eureka, which would need to be distributed and highly available. Instead internal ELBs with internal DNS names managed by Route53 will do just fine.
Providing plain URLs to @FeignClient
always results in no loadbalancer found for ..
, so I tried preventing Feign from using Ribbon:
Spring Cloud Netflix comes with FeignRibbonClient
, which is used if ILoadBalancer
from ribbon-loadbalancer
is present. However, if this dependency is excluded FeignConfiguration
is broken:
Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiVersionClient': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: feign.codec.Decoder org.springframework.cloud.netflix.feign.FeignConfiguration.decoder; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
Ideas welcome :-)
If you want to use a plain URL use:
@FeignClient(value = "http://example.com", loadbalance = false)
With the Brixton release train you would use:
@FeignClient(url = "http://example.com", name = "example")