时间:2021-05-19
这篇文章主要介绍了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@RestControllerpublic 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-hystrixeureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/feign.client.config.feignName.connectTimeout: 5000feign.client.config.feignName.readTimeout: 5000测试,条件为另一个服务可用时,我们是能调用的
测试.条件为另一个服务不可以时,我们是不能调用的,所以fallback
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言在SpringCloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢?造成该问题的原因Hystri
在SpringCloud的Feign组件中并不支持文件的传输,会出现这样的错误提示:feign.codec.EncodeException:class[Lorg
本文介绍了springcloud-使用Hystrix实现单个方法的fallback,分享给大家,具体如下:一、加入Hystrix依赖org.springfram
这篇文章主要介绍了SpringCloud断路器Hystrix原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
Feign的使用Feign也是网飞开发的,SpringCloud使用Feign非常简单,我下边演示一下:首先服务消费者这边肯定需要一个对应的依赖:compile