我正在使用 Feign 创建一个 REST 客户端。我的电话工作正常,但我想添加一些超时支持,而且我有一段时间想弄清楚如何做到这一点。
Feign 的文档说“要将 Hystrix 与 Feign 一起使用,请将 Hystrix 模块添加到您的类路径中。然后使用 HystrixFeign 构建器。” 好的,所以现在我有了这个:
service = HystrixFeign.builder()
.decoder(new GsonDecoder())
.target(ProjectService.class, URL_TO_BE_MOVED_TO_PROPS);
现在我所有的方法都返回了 HystrixCommands,我可以执行或排队,但我仍然看不到如何配置它们。
Hystrix wiki ( https://github.com/Netflix/Hystrix/wiki/Configuration ) 说配置应该像这样添加到 HystrixCommand 构造函数中:
public HystrixCommandInstance(int id) {
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"))
.andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
.withExecutionTimeoutInMilliseconds(500)));
this.id = id;
但是我的命令是由 Feign 构建/返回的,所以我无权访问构造函数。
另一件值得注意的事情是 Feign-Hystrix 自述文件 ( https://github.com/Netflix/feign/tree/master/hystrix ) 说“要将 Hystrix 与 Feign 一起使用,请将 Hystrix 模块添加到您的类路径中。然后,配置假装使用 HystrixInvocationHandler,”但谷歌搜索 HystrixInvocationHandler 将我指向非 Netflix 存储库。即使我使用了它,我也看不到如何配置 Feign 来使用它。
请告诉我我很笨,这非常简单,这会让我为自己已经解决了这个问题而感到高兴,并为自己无法解决这个问题而感到羞耻。
TL;DR:我想为我的 Feign 客户端发出的请求设置超时。怎么做?