一:关于 hystrix 的异常 fallback method wasn’t found
错误日志如下:
2017-08-11 16:27:55.415 ERROR 8828 --- [nio-8030-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.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found: helloFallback([class java.lang.String])] with root cause
com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionException: fallback method wasn't found: helloFallback([class java.lang.String])
...... // 其余省略
出现如上所述的异常,这是因为指定的 备用方法 和 原方法 的参数个数,类型不同造成的;
如下代码:
@HystrixCommand(fallbackMethod = "helloFallback")
public String helloService(String name) {
return restTemplate.getForEntity("http://hello-service/hello/{name}", String.class, name).getBody();
}
public String helloFallback(){
return "can't get hello method, this name is " ;
}
在这里原方法是带有参数,而备用方法则无参,修改为以下代码就可以解决问题:
@HystrixCommand(fallbackMethod = "helloFallback")
public String helloService(String name) {
return restTemplate.getForEntity("http://hello-service/hello/{name}", String.class, name).getBody();
}
public String helloFallback(String name){
return "can't get hello method, this name is " + name;
}