SpringCloud项目集成Feign、Hystrix过程解析
2019-12-11 12:10
831 查看
这篇文章主要介绍了SpringCloud项目集成Feign、Hystrix过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Feign的功能:这是个消费者,根据服务注册在Eureka的ID去找到该服务,并调用接口
Hystrix的功能:熔断器,假如A服务需要调用B服务的/cities接口获取数据,那就在A服务的controller里声明@HystrixCommand,如果B服务的/cities接口挂了,就返回一个自定义的值
项目结构
[root@node01 cloud]# tree weather/ weather/ ├── Application.java #主程序启动入口 ├── controller │ ├── CityController.java #控制路由,比如访问127.0.0.1:8080/cities, 这里调用cityClient方法 └── service └── CityClient.java #具体方法的实现,这里就具体实现cityClient方法(interface)
Application.java
package com.waylau.spring.cloud.weather; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; #引入熔断器 import org.springframework.cloud.client.discovery.EnableDiscoveryClient; #让eureka能发现自己 import org.springframework.cloud.netflix.feign.EnableFeignClients; #引入feign @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients #声明这个程序引入FeignClient @EnableCircuitBreaker #声明这个程序引入熔断器 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
controller/CityController.java
package com.waylau.spring.cloud.weather.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import com.waylau.spring.cloud.weather.service.CityClient; #引用service/CityClient.java @RestController public class CityController { @Autowired private CityClient cityClient; @GetMapping("/cities") #控制路由,比如访问127.0.0.1:8080/cities @HystrixCommand(fallbackMethod="defaultCities") #给另外一个服务设置hystrix熔断器,并声明fallbackMethod(回调方法)假如另外一个服务挂了,就调用defaultCities方法 public String listCity() { // 通过Feign客户端来查找 String body = cityClient.listCity(); #调用service里CityClient.java的cityClient方法,获取城市数据 return body; #返回,访问127.0.0.1:8080/cities就能返回城市数据 } public String defaultCities() { return "City Data Server is down!"; } }
service/CityClient.java(消费者)
用Feign去另一个接口获取数据
package com.waylau.spring.cloud.weather.service; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @FeignClient("msa-weather-city") #msa-weather-city是msa-weather-city服务注册到eureka的ID,通过这个ID就能访问到msa-weather-city微服务 public interface CityClient { @GetMapping("/cities") #调用msa-weather-city微服务里的/cities接口 String listCity(); #调用msa-weather-city微服务里的/cities接口里的listCity()方法 }
application.properties
spring.application.name: micro-weather-eureka-client-feign-hystrix eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/ feign.client.config.feignName.connectTimeout: 5000 feign.client.config.feignName.readTimeout: 5000
测试,条件为另一个服务可用时,我们是能调用的
测试.条件为另一个服务不可以时,我们是不能调用的,所以fallback
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- spring cloud 2.x版本 Feign服务发现教程(内含集成Hystrix熔断机制)
- SpringCloud调研系列3.2:断路器-Feign集成Hystrix
- Spring cloud之三 Ribbon/Hystrix了解(feign已集成)
- Spring Cloud云服务架构 - HongHu common-service 项目构建过程
- 微服务之springCloud-docker-feign-hystrix(六)
- springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
- (Spring源码解析)一步一步分析,springMVC项目启动过程(二)
- 配置springboot项目使用外部tomcat过程解析
- Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n
- 整合Spring Cloud分布式微服务云架构集成项目
- (七)整合spring cloud云服务架构 - HongHu common-service 项目构建过程
- Jenkins 持续集成——SpringCloud项目一键打包发布
- 疯狂Spring Cloud连载(21)Feign与Hystrix整合
- spring cloud架构 - HongHu common-service 项目构建过程
- Spring Cloud云服务架构 - commonservice-eureka 项目过程构建
- Springcloud(四)负载均衡feign与Hystrix断路器
- Spring Cloud云服务架构 - commonservice-eureka 项目构建过程
- Spring Cloud Netflix 教程(Feign+Ribbon+Hystrix)
- Spring Cloud Feign源码解析
- (三)spring cloud微服务分布式云架构 - Spring Cloud集成项目简介