我正在努力纠正错误 @Hystrix
返回 CompltetableFuture<String>
.
@HystrixCommand(fallbackMethod = "myMethodFallback")
public CompletableFuture<String> myMethod(){
CompletableFuture<String> future = getFuture();
return future;
}
public CompletableFuture<String> myMethodFallback(Throwable t){
return CompletableFuture.completedFuture("");
}
但是,调用该方法时,会出现以下错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: Incompatible return types.
...
Hint: fallback cannot return Future if the fallback isn't command when the command is async.
我在某个地方读到,我可能会尝试更改fallbackmethod的返回类型,这样它就不会返回未来,而是返回泛型值。所以我试了这个:
public String myMethodFallback(Throwable t){
return "";
}
出现了这个错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: com.netflix.hystrix.HystrixCommand$4 cannot be cast to java.util.concurrent.CompletableFuture
我到处玩,试着添加 @HystrixCommand
以及回退方法
@HystrixCommand
public CompletableFuture<String> myMethodFallback(Throwable t){
return CompletableFuture.completedFuture("");
}
但有个错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: com.netflix.hystrix.contrib.javanica.utils.FutureDecorator cannot be cast to java.util.concurrent.CompletableFuture
有人对hystrix回退方法的限制有很好的了解吗?
我能在这里做些什么来让这一切顺利吗?或者只是不可能返回一个 Future
从hystrix方法?
1条答案
按热度按时间sh7euo9m1#
下面是另一种使用springwebreactive和hystrixcommand的方法。
hystriximpl.java文件
我们只需要使用getresponse().block()来获取mono的字符串值。