springCloud的使用04-----熔斷器hystrix的使用
阿新 • • 發佈:2018-05-09
.get inter @service 執行 pub tco 2.6 註冊中心 1.2
1. restTemplate+ribbon使用hystrix
1.1 引入依賴
<!-- 配置hystrix斷路器 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
1.2 在需要熔斷的方法上添加註解
@Service public class HiService { @Autowired RestTemplate restTemplate;//需要熔斷的方法 @HystrixCommand(fallbackMethod="hiError")//熔斷後執行的方法 public String sayHi() { return restTemplate.getForObject("http://SERVICE-HI/info", String.class); } //熔斷後執行的方法 public String hiError() { return "sorry hi error"; } }
1.3 在啟動類中聲明使用hystrix
@SpringBootApplication @EnableDiscoveryClient//向服務中心註冊 @RestController @EnableHystrix//啟用熔斷機制 public class ConsumerRibbon { @Autowired private HiService hiService; public static void main(String[] args) { SpringApplication.run(ConsumerRibbon.class, args); } @Bean @LoadBalanced//使用這個restTemplate開啟負載均衡 RestTemplate initRestTemplate(){return new RestTemplate(); } @RequestMapping("info") public String hiConsumer() { String response=hiService.sayHi(); return response; } }
1.4 啟動註冊中心和cloud-consumer-ribbon,訪問http://localhost:8764/info 返回sorry hi error
啟動service-hi,訪問http://localhost:8764/info 返回hello eureka client 8762
2 feign使用hystrix
2.1 feign自帶熔斷器,無需導入hystrix的依賴,但是需要導入以下依賴,否則回報java.lang.NoClassDefFoundError: com/netflix/hystrix/contrib/javanica/aop/aspectj/HystrixCommandAspect錯誤
<dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-javanica</artifactId> </dependency>
2.2 在配置文件中啟用hystrix,默認是關閉的
feign:
hystrix:
enabled: true
2.3 指定熔斷後要執行的類
@FeignClient(value="service-hi",fallback=HiServiceHystric.class)//指定調用哪個服務提供者,指定熔斷後的執行的類 public interface IHiService { @RequestMapping(value="/info",method=RequestMethod.GET)//指定調用服務提供者的哪個接口 String info(); @RequestMapping(value="/info",method=RequestMethod.GET)//指定調用服務提供者的哪個接口 String hi(); }
2.4 指定熔斷後要執行對應的方法
@Component public class HiServiceHystric implements IHiService { //熔斷後執行相應的方法 public String info() { return "sorry info feign"; } public String hi() { return "sorry hi feign"; } }
2.5 在啟動類中聲明啟動hystrix
@EnableHystrix
2.6 啟動註冊中心和cloud-consumer-feign,訪問http://localhost:8765/info 返回sorry info feign
啟動service-hi,訪問http://localhost:8765/info 返回hello eureka client 8762
springCloud的使用04-----熔斷器hystrix的使用