【问题标题】:Is it possible to use @FeignClient without ribbon?是否可以在没有功能区的情况下使用@FeignClient?
【发布时间】:2020-01-02 09:48:15
【问题描述】:

我想使用 @FeignClient(url=...) 并使其直接转到给定的 url,而不是从功能区配置中获取主机。

我知道 spring-cloud feign 默认与ribbon和eureka一起提供。

据此: https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html#spring-cloud-ribbon-without-eureka 可以禁用 eureka 并为功能区提供硬编码的主机列表,例如:

${serviceId}:
  ribbon:
    listOfServers: ${host}

根据这个: https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html 可以为 feign 提供一个明确的 url,例如:

@FeignClient(name = "${feign.name}", url = "${feign.url}")
public interface StoreClient {
    //..
}

所以我对 FeignClient 到底会使用什么感到有点困惑: 从功能区配置提供 url 或主机?

我希望一些道具也可以禁用 feign 的功能区,因为如果 feign 被赋予单个 url,那么负载平衡的意义何在?

Spring-cloud 发布火车 - Camden.SR2

【问题讨论】:

    标签: java spring-cloud spring-cloud-feign feign netflix-ribbon


    【解决方案1】:

    是的,您可以在不使用 Ribbon 的情况下使用 Feign,您只需在 Feign Java 接口类中指定基本 url。

    而且你的接口签名应该有完整的 url 端点。

    一个例子如下所示。

    @FeignClient(url = "http://someurl")
    public interface MyInterface {
    
        @GetMapping("path/to/endpoint")
        MyObject get();
    
    }
    

    上面的示例代码展示了如何向http://someurl/path/to/endpoint发送GET请求

    【讨论】:

    • 该死的,我认为 url 不会有太大变化。谢谢。
    • @Joel Eze,如果我们不传递基本 url,那么必须指定 ${serviceId}:ribbon: listOfServers: ${host}??
    猜你喜欢
    • 2021-10-11
    • 2014-06-16
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多