1. HystrixCommand 继承方式 service 代码
package com.example.server1;
import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
import com.netflix.hystrix.HystrixCommandKey;
import com.netflix.hystrix.HystrixRequestCache;
import com.netflix.hystrix.HystrixThreadPoolKey;
import com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategyDefault;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@Service
public class CommandHelloWorld extends HystrixCommand<String> {
private final String name;
public CommandHelloWorld() {
//super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup"));
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("CmmandGroupKey"))
.andCommandKey(HystrixCommandKey.Factory.asKey("CommandKey"))
.andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("ThreadPoolKey")));
this.name = "Worlk";
}
@Override
protected String run() throws Exception {
/*try {
int i=1/0;
} catch (Exception e) {
System.out.println("出异常了");
}*/
int i=1/0;
return "Hello " + name + "!";
}
@Override
protected String getFallback() {
Throwable executionException = getExecutionException();
System.out.println(executionException.getMessage());
System.out.println(executionException.fillInStackTrace());
executionException.printStackTrace();
return "faild";
}
}
2. HystrixCommand 继承方式 Controller 代码
package com.example.server1;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CommandHelloWorldController {
@Resource CommandHelloWorld chw;
@RequestMapping(value="/commandhello",method=RequestMethod.GET)
public String commandhello () throws Exception {
chw.execute();
return "Controller";
}
}
3. HystrixCommand 继承方式测试结果
4. 控制台输出如下:
5. 如果注释掉降级方法的异常捕获代码,通过浏览器访问会报错
6. 控制台打印的错误日志: