问题标签 [spring-cloud-feign]

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 回答
2585 浏览

hystrix - 如何配置 HystrixFeign 客户端?

我有一个 Spring Boot 应用程序,但我无法利用 @EnableFeignClient,因为不支持 multipart。(请参阅我可以使用 Multipart 参数生成 Spring Feign 客户端吗?)。

我正在使用构建器创建自己的 HystrixFeign 客户端:

如何配置 Hystrix 的其他属性?我要设置执行隔离策略,断路器睡眠窗口,音量阈值,错误阈值百分比?

将它们包含在我的 application.properties 文件中就足够了吗?如何验证这些属性是否应用于“uploadMedia”端点?

0 投票
1 回答
595 浏览

spring-mvc - 如何从 Spring Data Rest 和 FeignClient 的资源中获取嵌入式项目的自我链接

我有一个应用程序,我使用 Spring Data Rest 在一个服务中公开我的实体,然后使用另一个服务中的 FeignClient 来访问和更新这些资源。

在我见过的在 Spring Data REST 中发布 @OneToMany 子资源关联的示例中,建立这些关系的方法如下:

  1. 创建实体
  2. 获取新创建实体的“self”href
  3. 为该类型创建拥有实体的现有实体列表,然后将该新创建的链接添加到列表中
  4. 对关联 URI 的 URI 列表执行“PUT”(内容类型为“text/uri-list”)以创建关联。

我已经使用 AngularJs 完成了这项工作,并且效果很好。但是,我真的不希望我的 javascript 控制器对我的域对象有如此深入的了解,我宁愿让 Spring HATEOAS 为我完成这项工作。

所以我所做的是在我的客户端应用程序中创建一个服务,它使用 Spring Cloud FeignClient 访问这些端点并完成 Angular 目前正在做的工作。

我遇到的问题是,当我引用我的关联(例如“ http://myapp/myobjects/3/myassociation ”)然后对该 URI 执行“GET”时,它返回“Resources<MyAssociation >" 无法获取关联对象的 URI 列表。对于“链接”,我得到的只是来自拥有实体的对关联的引用(例如“ http://myapp/myobjects/3/myassociation ”)。

有没有一种方法可以找到该关联列表而无需进行其他几个 GET 以便我可以将新添加的一个添加到其中?

提前致谢,

CS

0 投票
0 回答
1111 浏览

docker - 使用领事服务的 FeignClient 调用在 docker 容器中抛出连接被拒绝

我有用于 consul 和我的服务的 docker 容器。我有假装客户端界面试图访问在领事中注册的服务。它适用于本地测试(使用本地主机);但是在容器环境中同样不起作用。例外:

web_1 | 2016-05-27 15:40:01.131 INFO 1 --- [gement-client-1] c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client my-client initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=my-client,current list of Servers=[consul:9090],Load balancer stats=Zone stats: {unknown=[Zone:unknown; Instance count:1; Active connections count: 0; Circuit breaker tripped count: 0; Active connections per server: 0.0;] web_1 | },Server stats: [[Server:consul:9090; Zone:UNKNOWN; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 00:00:00 UTC 1970; First connection made: Thu Jan 01 00:00:00 UTC 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0] web_1 | ]}ServerList:ConsulServerList{serviceId='my-client', tag=null} web_1 | 2016-05-27 15:40:02.088 INFO 1 --- [pool-5-thread-1] c.netflix.config.ChainedDynamicProperty : Flipping property: my-client.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647 web_1 | 2016-05-27 15:40:02.525 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.netflix.hystrix.exception.HystrixRuntimeException: getUser failed and no fallback available.] with root cause web_1 | web_1 | java.net.ConnectException: Connection refused web_1 | at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_72-internal] web_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_72-internal] web_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_72-internal] web_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_72-internal] web_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_72-internal] web_1 | at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_72-internal] web_1 | at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.http.HttpClient.New(HttpClient.java:308) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.http.HttpClient.New(HttpClient.java:326) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513) ~[na:1.8.0_72-internal] web_1 | at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) ~[na:1.8.0_72-internal] web_1 | at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[na:1.8.0_72-internal] web_1 | at feign.Client$Default.convertResponse(Client.java:152) ~[feign-core-8.16.2.jar!/:8.16.2] web_1 | at feign.Client$Default.execute(Client.java:74) ~[feign-core-8.16.2.jar!/:8.16.2] web_1 | at org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:77) ~[spring-cloud-netflix-core-1.1.0.RELEASE.jar!/:1.1.0.RELEASE]

0 投票
2 回答
4191 浏览

spring-security - 微服务之间的安全

我有两个微服务,例如 A 和 B。微服务 B 的其余端点必须只能从微服务 A 访问。如何限制微服务之间的访问?如果可能的话,最好的做法是什么?

我正在使用弹簧云安全性(oauth2,jwt)。

0 投票
2 回答
945 浏览

mocking - 假装客户端的模拟实现不会是自动装配的

我想测试我的春季项目。我需要在测试类中模拟一个假装客户端,但正常的实现将是自动装配的,而不是模拟实现。这是我的代码的顶部。请帮忙。

}

这是我的测试课:

0 投票
2 回答
5718 浏览

java - Spring Cloud:无法让 Feign 客户端与领事合作

我正在尝试设置一个简单的 spring cloud consul 应用程序。

我有一个“分发”服务并在领事中注册(spring.application.name 属性设置为“分发”)

我有一个“获取”服务正在尝试使用 feign 调用“分发”服务。

这是我的主要课程

这是我的假客户

这是我的 pom.xml

当我请求“/disco”网址时,“分发”服务的网址被正确检索,这意味着整个发现事情正在按预期工作。

但是,当我请求“/use-feign”网址时,我得到以下异常:

com.netflix.client.ClientException:负载均衡器没有可用于客户端的服务器:分布在 com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:468) ~[ribbon-loadbalancer-2.2.0.jar:2.2. 0] 在 com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184) ~[ribbon-loadbalancer-2.2.0.jar:2.2.0] 在 com.netflix.loadbalancer.reactive.LoadBalancerCommand$1。调用(LoadBalancerCommand.java:180)~[ribbon-loadbalancer-2.2.0.jar:2.2.0] 在 rx.Observable.unsafeSubscribe(Observable.java:8460)~[rxjava-1.1.5.jar:1.1.5 ] 在 rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.1.5.jar:1.1.5] 在 rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~ [rxjava-1.1.5.jar:1.1.5]

我是否缺少任何配置?

谢谢您的帮助。

0 投票
1 回答
874 浏览

integration-testing - 使用测试替身对 FeignClient 进行集成测试

我对 Spring Cloud 很陌生。有没有办法我们可以使用测试替身(如线模拟或某种测试替身)对 Feign 客户端执行集成测试?有没有办法让我在注册表服务器中注册这个模拟测试双重,然后将它与 FeignClient 一起使用?

0 投票
0 回答
2240 浏览

spring-cloud - 如何让自定义的ErrorDecoder和@ExceptionHandler在spring cloud中协同工作

我有一个名为“hr”的spring云服务,以及一个使用Feign作为客户端调用hr服务的api网关服务。如果 hr 服务发生任何异常,它会返回一个类型为 .json 的 json 消息ResponseEntity<ServiceException>ServiceException就像:

在 api 网关服务中,我自定义了feign.codec.ErrorDecoder类似的内容:

获取 ServiceException 可以正常工作,并且我可以得到如下错误消息:

我想更改错误消息的格式,至少添加类的errorCode字段ServiceException,所以我添加了一个@ControllerAdvice注释类来尝试处理异常。但不幸的是,它不起作用。我可能是因为控制器没有通过某些过滤器抛出异常,所以@ControllerAdvice注释不起作用。

有人可以给我一些关于案例的建议吗?

0 投票
1 回答
3393 浏览

spring-cloud - 如何在特定的@FeignClient 上禁用尤里卡查找

我有一个微服务,@FeignClient主要用于与其他微服务通信。使用 Eureka 的服务发现机制可以很好地工作。

现在我迫切需要使用 a@FeignClient连接到外部系统,并且仍然使用如下所示的配置执行负载平衡。

Feign client

application.yml

从我浏览过的许多文档中,建议禁用 eureka 以允许从可用的 listOfServers 中获取负载平衡。我确实跟进并使用以下配置禁用它。

application.yml

这使我能够为针对外部系统的 feign 客户端执行负载平衡,但所有其他需要使用服务发现的 feign 客户端都崩溃了。

有没有办法单独为外部系统禁用 eureka 以进行伪装客户端设置,但允许它为其他客户端正常运行?

提前致谢!

0 投票
2 回答
643 浏览

spring-boot - Feign 客户端(在非 Web 环境中)到带有 HAL 的 RepostoryRestResource - 不是有效的用例?

最近在 Spring Boot 应用程序(在我的情况下不是 Web 应用程序)中使用 feign 客户端时,我看到客户端无法正确反序列化对象。正如一位同事向我指出的那样 - 原来是由于 HAL 模块注册是由 @ConditionalOnWebApplication 在 hatos 的spring 自动配置上有条件地保护的

知道这一点后,可以制定解决方案来克服这一点

  1. 我们可以向包含已注册 HAL 模块的 ObjectMapper 的 feign 客户端添加一个解码器(一小段代码,但仍然需要额外的工作)
  2. 转换为 Web 应用程序 - 我觉得这根本不是一个好的解决方案,不应该在使事情开箱即用的要点上完成。

那么现在知道这个有没有人遇到过这个?我觉得有一个 Jpa 休息资源的假客户端是一个有效的场景。

下面是一个分页的服务器响应示例。注意下面收到的响应中的元数据内容(有一个结果),但是当我尝试读取分页资源的内容时没有修复它会变成空/空