上篇文章传送门:【springCloud搭建】三、集成springCloudGateway网关

 ribbon+hystrix+feign所需的第三方包

        <!--feign服务通讯组件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--ribbon负载均衡组件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-ribbon</artifactId></dependency><!--hystrix熔断服务降级组件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-netflix-hystrix</artifactId></dependency>

添加到gateway模块,service下的服务子模块的配置内

#Feign 配置
feign:#开启feign熔断器功能hystrix:enabled: truehttpclient:# 开启 Http Clientenabled: true# 最大连接数,默认:200max-connections: 200# 最大路由,默认:50max-connections-per-route: 50# 连接超时,默认:2000/毫秒connection-timeout: 2000# 生存时间,默认:900Ltime-to-live: 900
hystrix:shareSecurityContext: truecommand:default:execution:isolation:thread:timeoutInMilliseconds: 5000threadpool:default:coreSize: 100
#配置负载均衡
ribbon:eager-load:enabled: true#指定服务饿加载#clients:#  - service-one# 请求处理的超时时间ReadTimeout: 5000# 请求连接的超时时间ConnectTimeout: 2000# 对当前实例的重试次数maxAutoRetries: 1# 切换实例的重试次数(根据自己单个服务实例数配置)maxAutoRetriesNextServer: 3# 对所有操作请求都进行重试okToRetryOnAllOperations: true# 对Http响应码进行重试retryableStatusCodes: 500,404,502

feign

服务提供者service_one,服务消费者service_two

服务提供者service_one创建api接口类

package org.wcy.api;import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.wcy.serviceOne.TestDTO;/*** <p>Title : TestApiController.java</p>* <p>Description : 服务间调用的测试controller层</p>* <p>DevelopTools : IntelliJ IDEA 2018.2.3 x64</p>* <p>DevelopSystem : Windows 10</p>* <p>Company : org.wcy</p>* @author : WangChenYang* @date : 2021/5/15 16:09* @version : 0.0.1*/
@RestController
@RequestMapping("test")
public class TestApiController {/*** 获取服务名字* @author 王晨阳* @date 2021/5/16-17:53* @version 0.0.1*/@PostMapping("getName")public String getServiceName() {return "service_one";}}

在服务消费者service_two启动类上加上feign组件发现注解 ,org.wcy.api为service_one_api模块的外放接口包路径

@EnableFeignClients("org.wcy.api")

在service_one服务接口外放模块内创建刚刚写好的接口并加上@FeignClient注解表明他是一个feign服务接口

注意:feignClient的服务名无法识别_所以在yml文件内的服务名必须也是不带_的可以改成 -,否则启动就会报 Service id not legal hostname (xxx)

因为在配置内开启了feign的hystrix熔断功能所以必须要配置fallback类,否则服务调用时就会报 failed and no fallback available

package org.wcy.api;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.wcy.fallback.TestServiceFallback;
import org.wcy.serviceOne.TestDTO;/*** <p>Title : TestApi.java</p>* <p>Description : TestApi接口服务类</p>* <p>DevelopTools : IntelliJ IDEA 2018.2.3 x64</p>* <p>DevelopSystem : Windows 10</p>* <p>Company : org.wcy</p>* @author : WangChenYang* @date : 2021/5/16 18:06* @version : 0.0.1*/
/*name为服务名,path为controller上加的前置路径,fallback熔断回调类*/
@FeignClient(name = "service-one", path = "/test", fallback = TestServiceFallback.class)
public interface TestApi {/*** 获取服务名字* @author 王晨阳* @date 2021/5/16-17:53* @version 0.0.1*/@RequestMapping(value = "getName", method = RequestMethod.POST)String getServiceName();}
package org.wcy.fallback;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import feign.hystrix.FallbackFactory;
import org.wcy.api.TestApi;
import org.wcy.serviceOne.TestDTO;/*** <p>Title : TestServiceFallback.java</p>* <p>Description : TestApi熔断回调</p>* <p>DevelopTools : IntelliJ IDEA 2018.2.3 x64</p>* <p>DevelopSystem : Windows 10</p>* <p>Company : org.wcy</p>* @author : WangChenYang* @date : 2021/5/16 19:43* @version : 0.0.1*/
@Component
public class TestServiceFallback implements TestApi {private static final Logger LOGGER = LoggerFactory.getLogger(TestServiceFallback.class);public static final String ERR_MSG = "Test接口暂时不可用: ";@Overridepublic String getServiceName() {return TestServiceFallback.ERR_MSG;}
}

引入service_one服务接口外放模块 service_one_api到服务消费者service_two的pom内

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.wcy</groupId><artifactId>service_two</artifactId><version>1.0.0</version><parent><groupId>org.wcy</groupId><artifactId>service</artifactId><version>1.0.0</version></parent><name>service_two</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><service_one.version>1.0.0</service_one.version></properties><dependencies><dependency><groupId>org.wcy</groupId><artifactId>service_one_api</artifactId><version>${service_one.version}</version></dependency></dependencies>
</project>

然后编写service_two外放给前端的接口,可以通过 @Autowired 注解直接注入其他服务的接口,像调用一个普通的service类那么简单

package org.wcy.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.wcy.api.TestApi;/*** <p>Title : TestController.java</p>* <p>Description : 测试的controller层</p>* <p>DevelopTools : IntelliJ IDEA 2018.2.3 x64</p>* <p>DevelopSystem : Windows 10</p>* <p>Company : org.wcy</p>* @author : WangChenYang* @date : 2021/5/15 16:08* @version : 0.0.1*/
@RestController
@RequestMapping("test")
public class TestController {@Autowiredprivate TestApi testApi;/** * 获取服务一的名称* @author 王晨阳* @date 2021/5/16-18:26* @version 0.0.1*/@GetMapping("getServiceOne")public String getServiceOne() {//调用服务一return testApi.getServiceName();}}

接下来是启动service_one服务,service_two服务,gateway网关服务,nacos注册中心进行feign服务调用的测试!

【springCloud搭建】四、集成ribbon+hystrix+feign相关推荐

  1. springCloud - 第5篇 - 断路器 Hystrix ( Feign 、Ribbon )

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.为什么要有熔断 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC ...

  2. 从实例一步一步入门学习SpringCloud的Eureka、Ribbon、Feign、熔断器、Zuul的简单使用(附代码下载)

    场景 SpringCloud -创建统一的依赖管理: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102530574 Sprin ...

  3. SpringCloud微服务:Ribbon和Feign组件,实现服务调用的负载均衡

    一.Ribbon简介 1.基本概念 Ribbon是一个客户端的负载均衡(Load Balancer,简称LB)器,它提供对大量的HTTP和TCP客户端的访问控制. 2.负载均衡简介 目前主流的负载均衡 ...

  4. SpringCloud搭建微服务之Hystrix熔断器

    1. 概述 1.1. 分布式系统需要解决的问题 复杂分布式体系结构中的应用程序有数十个依赖服务,每个依赖服务在某时将不可避免发生异常或失败.多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C ...

  5. 【springCloud搭建】五、集成mybatis-plus

    上篇文章传送门:[springCloud搭建]四.集成ribbon+hystrix+feign 将mybatis-plus所需第三方包加入cloud_demo的pom.xml内 <mybatis ...

  6. 【springCloud搭建】三、集成springCloudGateway网关

    上篇文章传送门:[springCloud搭建]二.集成nacos微服务注册中心 springCloudGateway的过滤器和拦截器的使用传送门: springCloudGateway 网关服务模块所 ...

  7. SpringCloud微服务基础 Eureka、Feign、Ribbon、Zuul、Hystrix、配置中心的基础使用

    1.单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N ...

  8. springcloud+springboot+Eureka+Feign+Ribbon+Hystrix+Zuul

    Springcloud集成Eureka Eureka服务端和客户端 本实例采用springboot,eureka和feign/ribbon,hystrix,zuul,mybatis,redis 1. ...

  9. SpringCloud版本Hoxton SR5 --- 第三讲:Ribbon 、Ribbon与Feign配合使用

    传送门:SpringCloud版本Hoxton SR5 --- 第一讲:认识 先看Ribbon.Fegin可以完成的功能,或者说他在项目中的定位和作用. 上篇文章主要讲:功能和作用都是用大白话,主要是 ...

最新文章

  1. [JZOJ4786]小a的强迫症
  2. python基础训练题2-元组,字典
  3. 手机玩游戏大作难在哪?硬件性能要加码,高能效AI同样关键
  4. python简历数据提取_如何使用pyPDF2从PDF格式的多页简历中提取文本数据?
  5. 教你在Excel里做GA的水平百分比图的详细步骤(图文教程)-成为excel大师(1)...
  6. 管理结果集和分析结果集
  7. OpenGL基础28:模型
  8. 《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》笔记
  9. 使用draw.io更改形状编辑图表的方法
  10. 45个python入门案例_给Python小白看的10个使用案例,入门Python就在这里了
  11. 《缠中说禅108课》29:转折的力度与级别
  12. 使用QT5+Opencv完成简单的图像处理及视频处理软件
  13. java实现http的GET/POST请求封装类-HttpRequest
  14. 太全面了!Python 编程的最好搭档—VSCode 实用指南!
  15. python怎么选取不连续的列_python – Pandas从数据帧中选择不连续的列
  16. 1. 抽纸片(java)
  17. IPadDemo之QQZone
  18. win11抢先版体验
  19. 002.西门子M440变频器端子控制正反转
  20. 零基础学习WEB前端开发(十六):font-family字体系列

热门文章

  1. 运维工程师的职责和必备技能
  2. 一个小博主的奇葩经历
  3. thinkphp5.0+ajax异步刷新验证用户名是否存在
  4. 每日优鲜、叮咚买菜上演美股生鲜冰火之歌
  5. OpenWrt可以保证插件可用的AP模式设置
  6. 自建CDN防御DDoS(3):架构的后续改进
  7. 全网最全的抓包工具的综合对比
  8. android高德地图改变绘制点标记位置,绘制点标记-在地图上绘制-开发指南-Android 室内地图SDK | 高德地图API...
  9. 状态反馈镇定之非线性系统反馈线性化(文末赠送仿真文件)
  10. 基于51单片机交通灯控制系统