spring cloud Hystrix服务容错--触发降级和设置超时时间
1.为服务提供一系列的服务容错保护机制
2.Hystrix服务容错作用:
1.服务降级
2.依赖隔离
3.服务熔断
3.服务降级
4.加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
5.主类加入注解
6.测试服务降低
/**
* 方式三
* 测试Hystrix 服务降低
*调用别的服务过程中出现异常 则调用fallback方法
*/
@Autowired
private RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "fallback")
@GetMapping("/getProductMsg3")
public String getMsg3()
{
String response= restTemplate.getForObject("http://PRODUCT/msg",String.class);
log.info("response:"+response );
return response;
}
/**
* 调用别的服务过程中出现异常 则调用此方法
* @return
*/
private String fallback()
{
return "太拥挤了 请稍后再试";
}
7.效果:
在order服务调用product服务时 product出现异常或者挂掉则触发降低
8.默认Fallback 和设置超时时间 默认是一秒 在HystrixCommandProperties类中找超时的配置 如果请求超过一秒则不管是否异常就触发降级 所有此时就需要把超时设置得长一些
/**
* 方式三
* 测试Hystrix 服务降低
*调用别的服务过程中出现异常 则调用fallback方法
*/
/*HystrixCommandProperties*/
@Autowired
private RestTemplate restTemplate;
@HystrixCommand(commandProperties = {@HystrixProperty(name ="execution.isolation.thread.timeoutInMilliseconds" ,value ="3000" )})
@GetMapping("/getProductMsg3")
public String getMsg3()
{
String response= restTemplate.getForObject("http://PRODUCT/msg",String.class);
log.info("response:"+response );
return response;
}
/**
* 调用别的服务过程中出现异常 则调用此方法
* @return
*/
private String fallback()
{
return "太拥挤了 请稍后再试";
}
/**
* 当@HystrixCommand(fallbackMethod = "fallback")
* 不指定fallback时调用次方法
* @return
*/
private String defaultFallback()
{
return "默认提示:太拥挤了 请稍后再试";
}