【SpringCloudAlibaba系列--OpenFeign组件】OpenFeign的配置、使用与测试以及OpenFeign的负载均衡

步骤一 准备两个服务,provider和consumer

本文使用kotlin语言

provider是服务的提供者,由provider连接数据库

@RestController
@RequiredArgsConstructor
@RequestMapping("/provider/depart")
class DepartController(private val departService: DepartService, private val discoveryClient: DiscoveryClient,private val environment: Environment@GetMapping("/list")fun listHandle(): MutableList<Depart> {val port = environment.getProperty("local.server.port")println("当前服务运行在端口: $port")return departService.findAllDeparts()}}

consumer是服务的消费者,consumer会去调用provider提供的服务

  • consumer需要添加loadbalancer
    // FeignBlockingLoadBalancerClientimplementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer:4.0.4'
  • consumer的yml
  • 此处的yml的其他部分在nacos配置中心中,关于nacos的配置中心如何使用见我的另一篇博客
    【SpringCloudAlibaba系列–nacos配置中心】
spring:application:name: equipment-management-feigncloud:nacos:config:username: your_usr_namepassword: your_pssserver-addr: xxx.xxx.xx.xx:8848file-extension: ymlgroup: HardwareServices namespace: e8c3bd64-52ff-494e-a51f-a907d9f098b8openfeign:client:config:default:connect-timeout: 500 #设置超时时间read-timeout: 500compression:request:enabled: true #开启压缩mime-types: ["text/xml", "application/xml", "application/json","video/mp4"]min-request-size: 1024 #超过此数值进行压缩response:enabled: truehttpclient:hc5:enabled: true #使用hc5,默认是hc4,也可以选择OkHttpconfig:import:- optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
  • EquipmentConfig
  • 从所有provider实例中,根据 n a m e 获取所有的可用实例,再根据 name获取所有的可用实例,再根据 name获取所有的可用实例,再根据name随机选择一个
// 负载均衡
class EquipmentConfig {@Beanfun randomLoadBalancer(e:Environment,factory:LoadBalancerClientFactory):ReactorLoadBalancer<ServiceInstance>{//获取微服务名称var name: String? = e.getProperty(LoadBalancerClientFactory.PROPERTY_NAME)// 从所有provider实例中,根据$name获取所有的可用实例,再根据$name随机选择一个return RandomLoadBalancer(factory.getLazyProvider(name, ServiceInstanceListSupplier::class.java),name)}}
  • DpartController
@RestController
@RequestMapping("/consumer/depart")
@RequiredArgsConstructor
class DepartController(private val departService: DepartService) {//查全部@GetMapping("/list")fun listHandle():List<Depart>?=departService.listAllDeparts()
}
  • DepartService
  • 此处注意,下面接口中的@FeignClient(“depart-provider”, path = “/provider/depart”)这种写法是新版openfeign的唯一方式,老版可以把path中的内容写在前面
@FeignClient("depart-provider", path = "/provider/depart") // 新版唯一方式
interface DepartService {//查全部@GetMapping("/list")fun listAllDeparts():List<Depart>?
}
  • 启动类
  • 在启动类上加上这句:@LoadBalancerClients(defaultConfiguration = [EquipmentConfig::class])
@LoadBalancerClients(defaultConfiguration = [EquipmentConfig::class])
@SpringBootApplication
@EnableFeignClients
class EquipmentManagement8012Applicationfun main(args: Array<String>) {runApplication<EquipmentManagement8012Application>(*args)
}

启动多个provider

  • 按照截图中的内容操作
    在这里插入图片描述
  • 勾选Allow multiple instances
    在这里插入图片描述
  • 点击Copy Configuration
    在这里插入图片描述
  • 注意多实例运行同一个微服务时,多个微服务不能使用同一个接口,在-Dserver.port=xxxx处指定你的接口
    在这里插入图片描述
    启动多个实例后,多次访问consumer的接口,然后查看你启动的多个provider的输出,看看是否成功
    在这里插入图片描述
    在这里插入图片描述
    如图所示,都能访问到就是成功了

有任何问题想要探讨可以私信我

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

磨砂玻璃(毛玻璃)风格的登录页,怎么就流行起来了呢?

拟物风格之后是扁平风格&#xff0c;扁平风格之后是拟态风格&#xff0c;而毛玻璃风格是拟态风格的一种表现形式&#xff0c;如今非常流行了&#xff0c;背后的原因是什么&#xff1f;贝格前端工场为大家详细分析下。 UI风格先后经历了拟物、扁平和拟态三大类&#xff0c;分别…

掼蛋之还贡技巧

掼蛋游戏的规则之一就是进贡和还贡以及抗贡&#xff0c;只要末游没能抗贡&#xff0c;那么就必须把最大的那张牌贡给头游&#xff0c;头游也要选一张牌还给末游。那么我们该如何还贡呢&#xff1f; 一、忌单张 尽量不要还自己的单张&#xff0c;因为自己的数量少&#xff0c;有…

RabbitMQ开启MQTT协议支持

1&#xff09;RabbitMQ启用MQTT插件 rootmq:/# rabbitmq-plugins enable rabbitmq_mqtt Enabling plugins on node rabbitmq: rabbitmq_mqtt The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_mqttrabbitmq_web_dispatch Ap…

从入门到精通:Spring Boot Alibaba学习网站助你构建高效微服务

介绍&#xff1a;Spring Boot Alibaba是一个基于Spring Boot的微服务开发框架&#xff0c;由阿里巴巴开源&#xff0c;旨在为分布式应用开发提供一站式解决方案。 Spring Boot Alibaba集成了阿里巴巴的微服务实践经验和组件&#xff0c;它是在Spring Cloud项目中孵化的&#xf…

解决Jenkins-2.396启动报错:Failed to start Jenkins Continuous Integration Server.

场景&#xff1a;现有环境已经使用Java 8在运行业务&#xff0c;安装Jenkins后启动报错。 原因&#xff1a;因为Jenkins-2.396 依赖于Java 11 版本才能启动。 解决方法&#xff1a; yum 安装Java11 yum install java-11-openjdk-devel java-11-openjdk 或者二进制安装java11修…

前端部署最优解有哪些?

前端部署最优解涉及多个方面&#xff0c;包括技术选型、部署方式、性能优化等。以下是一些基于我搜索到的资料的详细分析&#xff1a; 技术选型与框架使用&#xff1a;前端技术的选择对性能有很大影响。例如&#xff0c;Vite作为一种新型前端构建工具&#xff0c;以其快速构建的…

基于生成扩散模型的分子对接程序-DiffDock安装及使用

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、DiffDock是什么&#xff1f;二、DiffDock安装步骤1. 下载2.创建conda环境并安装STEP 1. 创建conda环境并配置STEP 2. 配置ESM和OpenFoldSTEP 3. 检查cuda和pytorch geometric安装STEP 4. 检查p…

uvm_reg_bus_op中byte_en详解

在使用寄存器模型的adapter进行数据转换时&#xff0c;会直接对uvm_reg_bus_op进行操作&#xff0c;其包含变量有操作类型、地址、数据等&#xff0c;除byte_en的描述不太清晰外&#xff0c;其他几个都比较好懂。从字面意思来看&#xff0c;该变量似乎是对数据按字节操作进行使…

【RHCE】SHELL for循环练习

目录 1.编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如:test1、test2、test3、……、test10 2.编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性&#xff0c;IP前3段由用户…

江科大stm32学习笔记——【3-2】GPIO输出:LED闪烁LED流水灯蜂鸣器

&#xff08;一&#xff09; 硬件连接 1.LED闪烁 LED灯正极连接面包板电源正极&#xff0c;LED负极连接单片机A0口 (也可以LED负极连面包板负极&#xff0c;LED正极连接单片机A0口) 跳线连接单片机3.3和面包板正极&#xff0c;连接单片机GND和面包板负极 2.LED流水灯 3.蜂鸣…

在UE5中制作UI环形进度条

在日常开发中&#xff0c;经常会有环形进度条UI的效果&#xff0c;例如技能CD时间、加载动画等&#xff0c;本文将通过材质球节点实现该效果&#xff0c;相较于准备美术素材&#xff0c;这样的做法更为方便&#xff0c;效果如下&#xff1a; 1.制作环状效果材质函数 在内容面…

迭代器是干什么的?为什么需要他?

有时候&#xff0c;我们需要一个一个地访问集合中的每个元素&#xff0c;就像你一个一个地拿出盒子里的玩具一样。迭代器就像是一个指示器&#xff0c;可以帮助我们逐个访问集合中的元素&#xff0c;这样我们就可以处理集合中的每个元素了。 Hashtable是干嘛的&#xff1f;为什…

【云动世纪:Apache Doris 技术之光】

本文节选自《基础软件之路&#xff1a;企业级实践及开源之路》一书&#xff0c;该书集结了中国几乎所有主流基础软件企业的实践案例&#xff0c;由 28 位知名专家共同编写&#xff0c;系统剖析了基础软件发展趋势、四大基础软件&#xff08;数据库、操作系统、编程语言与中间件…

MySQL-七种SQL优化

一、插入数据 普通插入&#xff1a; 采用批量插入&#xff08;一次插入的数据不建议超过1000条&#xff09; insert into tb_test values(1,Tom),(3, Cat),(3, Jerry)....手动提交事务 start transaction; insert into tb_test values(1,Tom),(3, Cat),(3, Jerry); insert …

LeetCode 2878.获取DataFrame的大小

DataFrame players: ------------------- | Column Name | Type | ------------------- | player_id | int | | name | object | | age | int | | position | object | | … | … | ------------------- 编写一个解决方案&#xff0c;计算并显示 players 的 行数和列数。 将结…

maven插件wagon-ssh、os-maven-plugin、buildnumber-maven-plugin使用详解

文章目录 前言一、os-maven-plugin的使用二、buildnumber-maven-plugin使用1、时间戳策略2、数字策略 三、wagon-ssh使用1、上传文件/文件夹2、执行Linux命令或者shell脚本 总结 前言 有时我们在构建项目时&#xff0c;希望能自动生成版本号或者生成不同操作系统标识的版本后缀…

Java实战:Spring Boot实现邮件发送服务

本文将详细介绍如何在Spring Boot应用程序中实现邮件发送服务。我们将探讨Spring Boot集成邮件发送服务的基本概念&#xff0c;以及如何使用Spring Boot和第三方邮件服务提供商来实现邮件发送。此外&#xff0c;我们将通过具体的示例来展示如何在Spring Boot中配置和使用邮件发…

RS®FSVA3000 信号与频谱分析仪

R&SFSVA3000 信号与频谱分析仪 非常适用于实验室以及生产过程中的高要求信号分析任务。R&SFSVA3000 信号与频谱分析仪的分析带宽高达 1 GHz&#xff0c;并具有低至 –120 dBc/Hz 的相位噪声和高动态范围&#xff0c;适用于要求严格的 5G NR 测量应用。分析仪测量速度快…

代码随想录算法训练营第二天

● 今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 977.有序数组的平方 方法一&#xff1a; 思路&#xff1a; 先将数据所有数据平方将数组排序 代码&#xff1a; class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vect…

vue后台管理添加水印简单方式watermark-package

详情参考:https://www.npmjs.com/package/watermark-package 示例方法 <el-button type"primary" click"AddWatermark">添加水印</el-button><el-button type"primary" click"RemoveWatermark">清除水印</el-but…