天天看点

spring cloud ----> RibbonClient设置的熔断器Hystrix不起作用

Ribbon

​​spring.io​​ 官网的简介:

Ribbon is a client side load balancer which gives you a lot of control over the behaviour of HTTP and TCP clients.

自己的翻译:

Ribbon是一个用来负载均衡的客户端,对于http和tcp客户端行为,Ribbon能给与你很多的控制方式。

在给Ribbon设置熔断器Hystrix的时候发现熔断器不起作用。

代码如下:

1 package com.example.demo;

2

3 import org.springframework.boot.SpringApplication;

4 import org.springframework.boot.autoconfigure.SpringBootApplication;

5 import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;

6 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

7 import org.springframework.cloud.client.loadbalancer.LoadBalanced;

8 import org.springframework.cloud.netflix.hystrix.EnableHystrix;

9 import org.springframework.context.annotation.Bean;

10 import org.springframework.web.client.RestTemplate;

11 /**

12 * 在工程的启动类中,通过 @EnableDiscoveryClient 向服务中心注册;

13 * 并且向程序的ioc注入一个bean: restTemplate;

14 * 并通过 @LoadBalanced 注解表明这个 restRemplate 开启负载均衡的功能。

15 *

16 *

17 * 熔断器的使用

18 * 在程序的启动类RibbonClientApplication 加 @EnableHystrix 注解开启Hystrix 不起作用

19 *

20 *

21 */

22 @SpringBootApplication

23 @EnableDiscoveryClient //.....

24 //@EnableHystrix //......//注解不起作用

25 @EnableCircuitBreaker //注解起作用,查看官方文档可知

26 public class RibbonClientApplication {

27

28 public static void main(String[] args) {

29 SpringApplication.run(RibbonClientApplication.class, args);

30 }

31

32 @LoadBalanced //......

33 @Bean

34 public RestTemplate restTemplate() {

35 return new RestTemplate();

36 }

37 }

继续阅读