分散して高可用性が必要なEurekaを実行したくないので、クライアント側のロードバランサーリボンなしでFeignを使用したいと思います。代わりに、Route53によって管理される内部DNS名を持つ内部ELBは問題なく機能します。
@FeignClient
へのプレーンURLを提供すると常にno loadbalancer found for ..
になるため、Feignがリボンを使用しないようにしました。
Spring CloudNetflixにはFeignRibbonClient
が付属しています。これは、ribbon-loadbalancer
のILoadBalancer
が存在する場合に使用されます。ただし、この依存関係が除外されている場合、FeignConfiguration
は壊れます。
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
アイデアは大歓迎です:-)
プレーンURLを使用する場合は、@FeignClient(value="http://example.com", loadbalance=false)
を使用します
Brixtonリリーストレインでは、@FeignClient(url="http://example.com", name="example")
を使用します
少し遅れますが、これを調べた後、独自のクライアントBeanを提供した場合、LoadBalancerFeignClientは構築および使用されず、Feignオープントレースautoconfigは引き続き機能します。
@Bean
public Client feignClient() {
return new Client.Default(null, null);
}