1. 程式人生 > >springCloud的使用04-----熔斷器hystrix的使用

springCloud的使用04-----熔斷器hystrix的使用

.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的使用