-
核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
-
启用hystrix 断路器
添加@EnableCircuitBreaker注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
public class MsaWeatherReportServerApplication {
public static void main(String[] args) {
SpringApplication.run(MsaWeatherReportServerApplication.class, args);
}
}
-
注解使用
-
与feign整合使用
/**
* @author gaowenfeng
* @package com.gwf.weather.service
* @describe Feign访问城市数据API服务接口
* @date 2018/2/21
* @FeignClient value 为访问的API名称 fallback 断路器调用,其参数类需要实现DataClient,提供相同的方法调用
*/
@FeignClient(value = "micro-weather-eureka-client",fallback = DataClientFallback.class)
public interface DataClient {
/**
* 访问 micro-weather-eureka-client API网关获取城市数据
* @return
* @throws Exception
*/
@GetMapping("city/cities")
List<City> listCities() throws Exception;
/**
* 访问micro-weather-eureka-client API网关 获取天气数据
* @param cityId
* @return
*/
@GetMapping("data/weather/cityId/{cityId}")
WeatherResponse getDataByCityId(@PathVariable("cityId") String cityId);
}
断路器类
@Component
public class DataClientFallback implements DataClient{
@Override
public List<City> listCities() {
List<City> list = new ArrayList<>();
City city1 = City.builder().cityId("101280601").cityName("深圳").build();
City city2 = City.builder().cityId("101280301").cityName("惠州").build();
list.add(city1);list.add(city2);
return list;
}
@Override
public WeatherResponse getDataByCityId(String cityId) {
return null;
}
}
application.yml
feign:
client:
config:
feignName:
connectTimeout: 50000
readTimeout: 50000
# 启用 feign 的 hystrix断路器
hystrix:
enabled: true