SpringCloud项目集成假装,Hystrix过程解析

  

这篇文章主要介绍了SpringCloud项目集成假装,Hystrix过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  

假装的功能:这是个消费者,根据服务注册在尤里卡的身份去找到该服务,并调用接口
  

  

Hystrix的功能:熔断器,假如一个服务需要调用B服务的/城市接口获取数据,那就在一个服务的控制器里声明@HystrixCommand,如果B服务的/城市接口挂了,就返回一个自定义的值

  

项目结构

        【root@node01云】#天气/树   天气/├──应用程序。java #主程序启动入口   ├──控制器   │├──CityController。java #控制路由,比如访问127.0.0.1:8080/城市,这里调用cityClient方法   └──服务   └──CityClient。java #具体方法的实现,这里就具体实现cityClient方法(接口)      

Application.java         包com.waylau.spring.cloud.weather;      进口org.springframework.boot.SpringApplication;   进口org.springframework.boot.autoconfigure.SpringBootApplication;   进口org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;#引入熔断器   进口org.springframework.cloud.client.discovery.EnableDiscoveryClient;#让尤里卡能发现自己   进口org.springframework.cloud.netflix.feign.EnableFeignClients;#引入假装      @SpringBootApplication   @EnableDiscoveryClient   @EnableFeignClients #声明这个程序引入FeignClient   @EnableCircuitBreaker #声明这个程序引入熔断器   公共类应用程序{      公共静态void main (String [] args) {   SpringApplication.run (Application.class, args);   }   }      

控制器/CityController.java         包com.waylau.spring.cloud.weather.controller;      进口org.springframework.beans.factory.annotation.Autowired;   进口org.springframework.web.bind.annotation.GetMapping;   进口org.springframework.web.bind.annotation.RestController;      进口com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;   进口com.waylau.spring.cloud.weather.service.CityClient;#引/CityClient.java用服务      @RestController   公开课CityController {   @ autowired   私人CityClient CityClient;      @GetMapping(/城市)#控制路由,比如访问127.0.0.1:8080/城市   @HystrixCommand (fallbackMethod=癲efaultCities”) #给另外一个服务设置hystrix熔断器,并声明fallbackMethod(回调方法)假如另外一个服务挂了,就调用defaultCities方法   公共字符串listCity () {//通过假装客户端来查找   字符串的身体=cityClient.listCity ();#调用服务里CityClient.java的cityClient方法,获取城市数据   恢复身体;#返回,访问127.0.0.1:8080/城市就能返回城市数据   }      公共字符串defaultCities () {   返回“城市数据服务器下来!”;   }   }      

服务/CityClient.java(消费者)

  

用假装去另一个接口获取数据

        包com.waylau.spring.cloud.weather.service;      进口org.springframework.cloud.netflix.feign.FeignClient;   进口org.springframework.web.bind.annotation.GetMapping;   @FeignClient (msa-weather-city) # msa-weather-city是msa-weather-city服务注册到尤里卡的ID,通过这个身份证就能访问到msa-weather-city微服务   公共接口CityClient {      @GetMapping(/城市)#调用msa-weather-city微服务里的/城市接口   字符串listCity ();#调用msa-weather-city微服务里的/城市接口里的listCity()方法   }      

application.properties         spring.application.name: micro-weather-eureka-client-feign-hystrix      eureka.client.serviceUrl.defaultZone: http://localhost: 8761/尤里卡/feign.client.config.feignName。connectTimeout: 5000   feign.client.config.feignName。readTimeout: 5000      

测试,条件为另一个服务可用时,我们是能调用的

  

 SpringCloud项目集成假装,Hystrix过程解析

  

测试。条件为另一个服务不可以时,我们是不能调用的,所以后备

  

 SpringCloud项目集成假装,Hystrix过程解析

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

SpringCloud项目集成假装,Hystrix过程解析