问题标签 [openfeign]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
367 浏览

spring-boot - @FeignClient 在 Spring Boot 中不能与 @Autowired 一起使用

我有一个假客户:

我打来的电话

但我收到以下错误:

0 投票
1 回答
1388 浏览

java - Feign 注册 - Spring Cloud - 更改目标而不覆盖功能区

介绍

我希望能够有两个不同的弹簧配置文件,并根据配置文件更改为我们的假装构建者的硬编码地址。

目前有以下内容:

return builder.target(cls, "http://" + serviceName);

但我实际上想执行以下操作并覆盖地址:

return builder.target(cls, "http://our-server:8009/" + serviceName);

为什么

有时我们不想在我们的开发环境中运行所有的服务。此外,某些服务有时只能通过 zuul 网关获得。

所以我们在不同的情况和条件下运行相同的代码。

技术细节

我们有以下代码用于构建我们的 Feign 客户端。

我们过去一直在使用@FeignClient注解,但最近我们决定开始手动构建我们的 feignClients。

下面的例子:

我们使用以下命令调用 feignRegistrar 类:

Spring Cloud 属性覆盖

我们也一直在使用属性文件,例如application-ENV.property带有以下条目的条目:

不幸的是,listOfServers这对我们来说还不够。我们也希望能够分配目录/路径。就像是:

ab-document-store.ribbon.listOfServers: localhost:8025/ab-document-store

其他解决方法

我曾考虑在所有请求中潜入标头,例如X-SERVICE-NAME使用假装拦截器。然后我们可以将所有服务指向一个地址(例如 localhost:9001),并将这些请求转发/代理到 localhost:9001/X-SERVICE-NAME。

但是,我更喜欢更简单的解决方案,例如:

但这不起作用:(

0 投票
0 回答
308 浏览

openapi - 为什么OpenApi中的feign客户端模板中没有@FeignClient注解

开门见山-> 有人知道为什么这个模板文件没有@FeignClient 注释吗?

问题是我们想在我们的配置中使用@EnableFeignClients 注释,但似乎在生成的客户端中没有@FeignClient 注释,我们被迫显式地创建客户端bean。

0 投票
0 回答
97 浏览

java - 如何让我的 RegistryBuilder 自动装配到 feign 的 HttpClientFeignLoadBalancedConfiguration 中?

我正在尝试实现到一个端点的双向 TLS 连接,我们使用一个带有 apache httpclient 的 feign 客户端连接到该端点。

我尝试了这种配置,但它不起作用,它只是以一条handshake_failure消息终止,据我所知,它在请求期间根本不使用我的密钥库。我的分析是因为.setSSLSocketFactory(getSSLConnectionSocketFactory()).setConnectionManager(connectionManager)不配合在这个配置中发挥得很好:


作为一种解决方案,我已删除setSSLSocketFactory并添加了一个 RegistryBuilder bean,但它似乎没有被拾取。我怎样才能得到这个豆子:

注入这里:

欢迎任何指点,或者任何使用客户端证书 feign 和 ApacheHttpClient 设置 TLSv1.2 的 GitHub 项目都会非常有帮助。

0 投票
1 回答
242 浏览

spring-boot - Kubernetes 和 Spring Boot @Service 负载均衡

我让 Kubernetes 在两个节点上运行,一个应用程序部署在两个节点上(两个 pod,每个节点一个)。

这是一个 Spring Boot 应用程序。它使用 OpenFeign 来实现服务可发现性。在应用程序中,我定义了一个 RestController,它有一些 API 和一个从 API 内部调用的 @Autowired @Service。

每当我对其中一个 API 发出请求时,Kubernetes 都会使用某种负载平衡将流量路由到其中一个 pod,然后调用应用程序 RestController。这很好,我希望这是负载平衡的。

一旦调用该 API 并调用 @Autowired @Service,就会出现问题。不知何故,这也得到了负载平衡,并且对 @Service 的调用可能最终在另一个节点上。

继承人和例子:

  • 我们有两个节点:node1,node2
  • 我们向 node1 的 IP 地址发出请求。
    • 这可能会负载平衡到 node2(这很好)
  • node1 获取请求并调用@Autowired @Service
  • 调用跳转到 node2(这是问题发生的地方)

在代码中:
控制器:

服务:

我希望负载平衡仅发生在 REST 请求上,而不是应用程序对其 @Service 组件的内部调用。我将如何实现这一目标?Spring Boot 的 @service 组件在 Kubernetes 集群中的运行方式是否有任何配置?我可以改变这个吗?

提前致谢。

编辑:
经过一些调试,我发现负载平衡到另一个节点的不是服务,而是初始http请求。即使请求是专门发送到 node1 的 url ... 由于我同时调试两个节点,我没有注意到这一点。

0 投票
1 回答
1043 浏览

java - jaeger tracking 和 spring cloud OpenFeign

我正在使用 spring Cloud openFeign 从 service#1 向 service#2 发出请求

当我使用 restTemplate 时,我可以在 jaeger 跟踪中正确看到 2 个请求。但是在使用 openFeign 时,我只看到 1 个请求。有没有办法整合 jaeger 和 openFeign?

我发现了这个: https ://www.baeldung.com/spring-cloud-openfeign
https://github.com/OpenFeign/feign-opentracing

0 投票
1 回答
682 浏览

java - Spring Boot OpenFeign 随机端口测试

我有一个像这样设置的 OpenFeign 客户端:

和这样设置的 Spring Boot 测试:

该测试应该启动应用程序并使用 Feign 客户端向其发送请求。

问题是 RANDOM_PORT 值。

如何在属性文件中声明“myservice.url”属性以使其包含正确的端口?

我试过这个:

但它会导致“localhost:0”。

我不想为端口使用常量值。

请帮忙。谢谢!

0 投票
1 回答
452 浏览

spring-boot - Feign Client 找不到自定义注册的 eureka 服务

我会稍微介绍一下我想要实现的目标。我有一个 Spring Boot 应用程序,它是一个 Eureka 客户端,并将自身注册为数据服务服务。在此应用程序启动(ApplicationReadeEvent.class)之后,我还注册了另一个自定义创建的 Eureka 客户端,并且似乎注册成功。访问http://localhost:8761时,我能够看到新注册的服务(工作流服务)。我决定在数据服务应用程序中执行它的原因是因为我不需要它脱离这个上下文,我只需要在 DEV 环境中使用它。后来代替它插入由其他团队开发的真正的工作流服务。这里的问题是,当我尝试通过 feign 客户端访问此服务时,我收到一个异常:

在此处输入图像描述

这是我的自定义服务注册码:

这是我的假客户端代码:

这是我试图访问另一个服务的假装客户端用法:

0 投票
0 回答
393 浏览

spring-cloud-feign - 绕过一个 FeignClient 的全局 RequestInterceptors 列表

在我们的微服务中,我们使用 Feign 在服务之间进行通信,我们有一个专用的 RequestInterceptor 来处理安全性并将我们的 JWT 令牌附加到每个请求。

我想使用 Feign 来调用我组织之外的第 3 方服务。

假设我的 FeignClient 看起来像这样。

问题是这个第 3 方客户端也将通过 RequestInterceptors 列表并获得在我的微服务之间使用的相同身份验证标头。我想绕过 RequestInterceptors 的默认列表来设置一个特定的。

我试图覆盖文档中描述的默认配置,我设法添加了特定的 RequestInterceptor 但仍然通过列表,所以我得到了请求中的所有标头。

0 投票
1 回答
499 浏览

openssl - 如何传递证书文件和密钥 - Feign Client

我需要通过 https 进行第三方 rest api 调用。我想在 Spring Boot 应用程序中使用 feign 客户端。我对 feign 客户端以及如何使用它进行 api 调用有一个想法。但我不确定如何传递证书文件和密钥。下面是我想使用 feign 客户端实现的示例 python 代码提取。可以帮我合并标记为 ** 的代码。