我知道我们可以通过提供url Ex强制FeignClient使用OkHttp而不是Ribbon。 @FeignClient(name="serviceId")
我希望即使只提供名称也可以使用OkHttpClient。防爆。 RGB
根据spring cloud文档“如果启用了功能区,则它是LoadBalancerFeignClient,否则使用默认的假设客户端。”
如何禁用功能区,以便使用默认的假装客户端。
答案 0 :(得分:0)
我有一个相同的问题,但是我的设置有点不同,在我的情况下(使用带有spring mvc样式注释的spring-cloud-starter-openfeign)我无法正常工作。
仅供参考:我需要一个带有SSLSocketFactory的自定义客户端,最终只为该客户端创建了bean,并将网址保留在@FeignClient
@Bean
public Client myClient() {
return new Client.Default(getSSLSocketFactory(), new NoopHostnameVerifier());
}
但是,我们确实有一些使用spring-cloud-starter-feign的项目,其中注释中未提供URL。不知道下面的配置是否完整(我没有设置),但这可能会为您指明正确的方向...
依赖项
compile("org.springframework.cloud:spring-cloud-starter-feign") {
exclude group: 'org.springframework.cloud', module: 'spring-cloud-starter-ribbon'
exclude group: 'org.springframework.cloud', module: 'spring-cloud-starter-archaius'
}
配置
@Configuration
@Import(FeignClientsConfiguration.class) // org.springframework.cloud.netflix.feign.FeignClientsConfiguration
public class MyConfig {
@Value("${client.url}")
private String url;
@Bean
public MyClient myClient(final Decoder decoder, final Encoder encoder, final Client client) {
return Feign.builder().client(client)
.encoder(encoder)
.decoder(decoder)
.target(MyClient.class, url);
}
}
答案 1 :(得分:0)
与功能区无关。
检查:
feign:
httpclient:
enabled: false
这将禁用Spring Cloud自动配置的httpclient,并将在上下文中搜索名为@Bean
的{{1}}。因此,只需在httpClient
类中提供@Bean
的定义即可。
在春季云假装中检查课程@Configuration
。
https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html