1. service 代码
package com.example.server1; import org.springframework.stereotype.Service; import com.netflix.hystrix.HystrixCommandGroupKey; import com.netflix.hystrix.HystrixCommandKey; import com.netflix.hystrix.HystrixThreadPoolKey; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import com.netflix.hystrix.HystrixCommand.Setter; @Service public class annotationHelloWorld { private final String name; public annotationHelloWorld() { this.name = "Worlk"; } @HystrixCommand(fallbackMethod="getFallback",commandKey="getUserById",groupKey="UserGroup", threadPoolKey="getUserByIdThread") protected String getUserById() throws Exception { int i=1/0; return "Hello " + name + "!"; } protected String getFallback(Throwable e) { System.out.println(e.getMessage()); e.printStackTrace(); return "faild"; } }2. Controller 代码
package com.example.server1; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class annotationHelloWorldController { @Autowired annotationHelloWorld ahw ; @RequestMapping(value="/annotationhello",method=RequestMethod.GET) public String commandhello () throws Exception { return ahw.getUserById(); } }3. 浏览器访问获得降级处理的结果
4. 控制台日志输出
5. 修改 service 中 @HystrixCommand 注解忽悠 ArithmeticException 异常。忽略ArithmeticException 异常后,异常将会抛给页面。
上面标红线的代码是忽略指定异常。
6. 浏览器访问结果
7.控制台日志输出