一、添加pom文件
<!-- 断路器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
二、启动类添加注解(@EnableHystrix)
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@EnableHystrix
public class OrderApp {
public static void main(String[] args) {
SpringApplication.run(OrderApp.class,args);
}
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
三、yml文件配置
开启断路器
#开启断路器
feign:
hystrix:
enabled: true
四、使用Feign方式添加断路器
4.1 添加MyFallBack类,实现FeignService接口;实现方法中返回降级处理内容
@Component
public class MyFallBack implements FeignService {
public String getUser(int id) {
return "getUser error";
}
}
4.2 FeignService接口上添加(fallback = MyFallBack.class)
@FeignClient(value = "dc-user",fallback = MyFallBack.class)
public interface FeignService {
@RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
String getUser(@PathVariable("id") int id);
}
五、使用RestTemplate方式添加断路器
5.1 在OrderService中添加降级处理方法getUser;添加 @HystrixCommand(fallbackMethod = "getUser");fallbackMethod为降级处理方法,getUser为最下面的一个降价处理方法。
@Service
public class OrderSercice {
@Autowired
private RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "getUser")
public String getUSer(int id){
String url = "http://dc-user/user/{id}";
String result = restTemplate.getForObject(url,String.class,id);
return result;
}
//服务降级处理方法
public String getUser(int id){
return "getUser error2";
}
}