gpt4 book ai didi

java - netflix.feign 和 openfeign 之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:53 26 4
gpt4 key购买 nike

简介

我最近使用了 netflix feign 和 ribbon,这非常有用。

一个例子是:

@FeignClient(name = "ldap-proxy")
public interface LdapProxyClient {
@RequestMapping(path = "/ldap-proxy/v1/users/{userNameOrEMail}", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
LdapUser search(@PathVariable("userNameOrEMail") String userNameOrEMail);
}

然而,在某些时候,我认为我不必手动编写所有这些定义(对于现有的网络服务),而是应该查看是否存在工具。

我偶然发现了 https://github.com/swagger-api/swagger-codegen 并看到了生成客户端的示例,例如https://github.com/swagger-api/swagger-codegen/tree/master/samples/client/petstore/java/feign .

但是,当我仔细查看导入时,我注意到以下内容:

import feign.Feign;

另一方面,Netflix 的开源解决方案具有包名称:org.springframework.cloud.netflix.feign

此外,我注意到两者都使用功能区(如果可用),但 Netflix 的符号更清晰,后台发生了很多事情。例如。 @FeignClient 注释类 javadoc 声明:

  • Annotation for interfaces declaring that a REST client with that interface should be * created (e.g. for autowiring into another component). If ribbon is available it will be * used to load balance the backend requests, and the load balancer can be configured * using a @RibbonClient with the same name (i.e. value) as the feign client.

但是在 Feign.feign 文档中(位于 https://github.com/OpenFeign/feign )我看到:

RibbonClient overrides URL resolution of Feign's client, adding smart routing and resiliency capabilities provided by Ribbon.

Integration requires you to pass your ribbon client name as the host part of the url, for example myAppProd.

> MyService api =
> Feign.builder().client(RibbonClient.create()).target(MyService.class,
> "https://myAppProd");

所以我的问题是:

  1. 两者之间的历史/关系和区别是什么?
  2. 各自的优缺点是什么?

它们是完全不同的项目,没有任何关系,还是 netflix 只是 fork /利用 OpenFeign 并将其修改为集成云解决方案?从本质上讲,netflix 是否只是从开源项目中获取并集成了 Discovery、ribbon 和 feign 等不同技术?

最佳答案

“Netflix feign”是项目名称。最新版本(下面的依赖项)日期为 2016 年 7 月。

compile group: 'com.netflix.feign', name: 'feign-core', version:'8.18.0'   // OLD

“Open feign”是项目名称。这是同一个项目,但是被转移到不同的 git repo 并获得了一个新的 group-id。它的版本从 9.0.0 开始。

compile group: 'io.github.openfeign', name: 'feign-core', version: '10.0.1'   // NEW

参见 this github issue了解发生的事情的简要历史。最值得注意的是,您会发现 Feign 不再在 Netflix 内部使用。 :^o

关于java - netflix.feign 和 openfeign 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49823158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com