java – Hystrix在运行时忽略超时
发布时间:2020-12-15 04:24:44 所属栏目:Java 来源:网络整理
导读:我正在试验一下Hystrix. 我支持文档,即使是通过’run’对Hystrix命令的同步调用默认情况下也会在一个线程中运行,并且应该受Hystrix中配置的超时限制.但是当我尝试它时,似乎没有超时. 我是否误解了文档?或者我做错了什么?有没有办法通过同步调用获得超时行
我正在试验一下Hystrix.
我支持文档,即使是通过’run’对Hystrix命令的同步调用默认情况下也会在一个线程中运行,并且应该受Hystrix中配置的超时限制.但是当我尝试它时,似乎没有超时. 我是否误解了文档?或者我做错了什么?有没有办法通过同步调用获得超时行为? 更具体:我有一个’SimpleService’需要5秒才能返回.这包含在Hystrix命令中,超时为500ms: public class WebRequestCommand extends HystrixCommand<String> { private final SimpleService baneService; protected WebRequestCommand(SimpleService baneService) { super( Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("test")) .andCommandPropertiesDefaults( HystrixCommandProperties.Setter() .withExecutionIsolationThreadTimeoutInMilliseconds(500))); this.baneService = baneService; } @Override protected String run() { return baneService.connectToBane(); } @Override protected String getFallback() { return "SERVICE NOT AVAILABLE"; } } 如果我这样称呼它: WebRequestCommand webService = new WebRequestCommand(baneService); result = webService.run(); 我在5秒后得到结果=>没有超时 如果我这样称呼它: WebRequestCommand webService = new WebRequestCommand(baneService); result = webService.queue().get(); Hystrix超时在500ms后发生并返回回退. 解决方法
我认为你应该为同步方式调用execute()而不是run().
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |