我在本地tomcat上运行了Spring Cloud。我正在使用伪装客户端调用包装在Hysterix命令中的一个远程服务,该服务一个直接,另一个异步,如下所示。

@HystrixCommand(fallbackMethod = "fallBackEmployeeCall")
    public List<EmployeeBean> getEmployees() {
        //Call through Feign Client
        return empInterface.getEmployees();
    }

    //Async Version
    @HystrixCommand(fallbackMethod = "fallBackEmployeeCall")
public Future<List<EmployeeBean>> getEmployeesAsync() {
    return new AsyncResult<List<EmployeeBean>>() {
        @Override
        public List<EmployeeBean> invoke() {
            return empInterface.getEmployees();
        }
    };
}


当我打电话给getEmployeesAsync()。get()时
我在例外之下

java.lang.UnsupportedOperationException:AsyncResult只是一个刺,不能用作Future的完整实现

它类似于以下问题:-

[https://github.com/Netflix/Hystrix/issues/1179][1]


根据文档,解决方案是配置HystrixCommandAspect类,我这样做如下:-

@Configuration
@EnableAspectJAutoProxy
public class HystrixConfiguration {

    @Bean
    public HystrixCommandAspect hystrixAspect() {
        return new HystrixCommandAspect();
    }

}


但是我仍然遇到同样的例外。看来我缺少一些配置。
注意:-我的同步方法工作正常。

最佳答案

您可以尝试在另一个类中调用getEmployeesAsync,该类将类的实例注入getEmployeesAsync。我也有这个例外。然后我就这样成功地做到了。

10-07 19:10