如何禁用功能区并在 Spring Cloud 中仅使用 FeignClient

Vid*_*amy 7 spring-cloud netflix-feign spring-cloud-feign feign spring-cloud-netflix

我知道我们可以通过提供 url Ex 来强制 FeignClient 使用 OkHttp 而不是 Ribbon。 @FeignClient(url="serviceId", name="serviceId")

即使只提供了名称,我也希望使用 OkHttpClient。前任。@FeignClient(name="serviceId")

根据 spring cloud 文档“如果启用 Ribbon,则它是 LoadBalancerFeignClient,否则使用默认的 feign 客户端。”

如何禁用功能区以便使用默认的伪装客户端。

Cla*_*uds 0

我有同样的问题,但我的设置有点不同,我没有让它在我的情况下工作(使用 spring-cloud-starter-openfeign 和 spring mvc 样式注释)。


仅供参考:我需要一个带有 SSLSocketFactory 的自定义客户端,最终只是为客户端创建 bean 并保留 url@FeignClient

 @Bean
 public Client myClient() {
     return new Client.Default(getSSLSocketFactory(), new NoopHostnameVerifier());
 }
Run Code Online (Sandbox Code Playgroud)

但是,我们确实有使用 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'
}
Run Code Online (Sandbox Code Playgroud)

配置

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)