Hystrix 服务容错
第一步:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
第二步:
@EnableCircuitBreaker
第三步:
package com.example.order.controller;
import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/**
* @Title: HystrixController
* @ProjectName order
* @date 2019/12/1911:34
*/
@RestController
@DefaultProperties(defaultFallback = "defaultFallback") // 默认调用的方法名
public class HystrixController {
// 超时配置
@HystrixCommand//(commandProperties = {@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")})
@GetMapping("/getProductInfoList")
public String getProductInfoList() {
RestTemplate restTemplate = new RestTemplate();
return restTemplate.postForObject("http://127.0.0.1:8080/product/list",
null,
String.class);
// throw new RuntimeException("发送异常了");
}
/**
* 默认方法名, 如果8080服务不通,会调用
* @return
*/
private String defaultFallback() {
return "默认提示:太拥挤了, 请稍后再试~~";
}
}
yml 配置方式(方法不需要单独配置)
hystrix:
command:
# 配置超时时间
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 1000
getProductInfoList: # 给方法名称单独添加超时时间
execution:
isolation:
thread:
timeoutInMilliseconds: 3000
feign 中直接使用 hystrix 添加配置
feign:
hystrix:
enabled: true
在@FeignClient(name="xxx", fallback=类名.class) 该类需要实现当前接口client类的所有方法

浙公网安备 33010602011771号