Spring Cloud之Config分布式配置应⽤

news2024/11/24 16:54:33
. 右键⽗⼯程【 yx-parent 】选择【 New - Module 】选项,然后选择创建【 Maven 】类型项⽬(不勾选模 板),将项⽬名称设置为【yx-cloud-config 】。

 yx-cloud-config⼯程的pom.xml⽂件中引⼊以下依赖坐标(需要将⾃⼰注册到Eureka)。

 <dependencies>
        <!-- Eureka Client客户端依赖引入 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
        <!-- Config配置中心服务端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>
com.yx.config 包下创建 ConfigApplication 启动类,使⽤注解 @EnableConfigServer 开启配置中⼼服务器功 能。

package com.yx.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer // 开启配置服务器功能
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigApplication {
 public static void main(String[] args) {
 SpringApplication.run(ConfigApplication.class, args);
 }
}
yx-cloud-config ⼯程的 resources ⽬录下创建 application.yml 配置⽂件并添加以下配置。
server:
  port: 9400

# 注册到Eureka服务中心
eureka:
  client:
    service-url:
      defaultZone: http://YXCloudEurekaServerC:9200/eureka,http://YXCloudEurekaServerD:9201/eureka
  instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
spring:
  application:
    name: yx-service-config
  cloud:
    config:
      server:
        git: #用于配置git仓库信息:uri,
          uri: https://gitee.com/zhengchunbo/yx-config.git
          username: **
          password: *****
          search-paths: #表示仓库的名称
            - yx-config
      label: master # 读取分⽀

 5.启动yx-cloud-config⼯程,访问http://127.0.0.1:9400/master/application-dev.yml地址进⾏测试

3. 构建 Client 客户端
在page消费者微服务 pom.xml ⽂件中添加 config-client 依赖坐标
<dependency>
<groupId> org.springframework.cloud </groupId>
<artifactId> spring-cloud-config-client </artifactId>
</dependency>

在page消费者微服务的application.yml⽂件名称修改为bootstrap.yml。并在为bootstrap.yml⽂件中对config 进⾏配置。

spring:
  # ⽅式1:暴露指定refresh端⼝
  management:
    endpoints:
     web:
      exposure:
       include: refresh
  application:
    name: yx-service-page
  cloud:
    config:
    # config客户端配置和ConfigServer通信,并告知ConfigServer希望获取的配置信息在哪个⽂件中
     name: application  #表示获取ConfigServer 中的配置文件名称(application-dev)
     profile: dev # 后缀名称
     label: master # 分⽀名称
     uri: http://localhost:9400 # ConfigServer配置中⼼地址

package com.yx.page.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("config")
@RestController
public class ConfigController {
 @Value("${mysql.user}")
 private String mysqlUser;
 @Value("${person.name}")
 private String personName;
 @RequestMapping("remote")
 public String getRemoteConfig() {
 return "mysqlUser=" + mysqlUser + ", personName=" + personName;
 }
}
Config 配置⼿动刷新
1.在消费者模块添加 springboot-starter-actuator 依赖(已在⽗⼯程中添加)
2. Client 客户端(消费者 模块)的 bootstrap.yml(前面步骤已经把application.yml改为了booststrap.yml) ⽂件中添加配置(暴露通信端点,已添加)

 

 

 在消费者的collection类上使⽤到配置信息的类上添加@RefreshScope注解

4. ⼿动向 Client 客户端发起 POST 请求 http://localhost:9100/actuator/refresh ,即可完成刷新配置信息

 Spring Cloud Config+Spring Cloud Bus实现⾃动刷新

1. Config Server 服务端( yx-cloud-config 模块)和客户端( yx-service-page 模块)添加消息总线⽀持,引⼊ bus-amp依赖
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

2..在Config Server服务端(yx-cloud-config模块)和客户端(消费者)(yx-service-page模块)的yml配置⽂件中添加 rabbitmq服务的配置信息

spring:
  rabbitmq:
    host: 192.168.48.67
    username: admin
    password: 123456

3.Config Server微服务(yx-cloud-config模块)和消费者page的application.yml⽂件中暴露端⼝

 

 4.重启各个服务,更改配置之后,向配置中⼼服务端发送POST请求,各个客户端配置即可⾃动刷新http://127.0.0. 1:9400/actuator/bus-refresh

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

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

相关文章

AI原生云向量数据库Zilliz Cloud查看备份快照和恢复备份

目录 快照状态 查看快照详情 相关文档 本文介绍如何查看已创建的快照信息。您可以手动或自动创建快照。 快照状态 根据不同场景,快照可能会处于如下状态: 创建中 如果快照处于此状态,则无法创建其他快照。但您可以单击操作列中的更多按钮,然后选择取消来终止创建过程。…

SpringCloud——分布式请求链路跟踪Sleuth

安装运行zipkin SpringCloud从F版已不需要自己构建Zipkin Server&#xff0c;只需要调用jar包即可 https://dl.bintray.com/oenzipkin/maven/io/zipkin/java/zipkin-server/ 下载&#xff1a;zipkin-server-2.12.9-exec.jar 运行&#xff1a;java -jar zipkin-server-2.12.9-e…

【Excel】excel多个单元格的内容合并到一个单元格,并使用分隔符

方法一&#xff1a;使用连接符 & 左键单击选中“D2”单元格&#xff0c;在D2单元格中输入公式“A2&B2&C2”&#xff0c;按“Enter”即可实现数据合并。 ------如果想连接的时候&#xff0c;中间加分隔符&#xff0c;可以使用&#xff1a;公式A2&"&#xf…

4G无线红外电表电能量力参数采集仪器功能DL/T645-1997、DL/T645-2007、DL∕T698.45-2017

红外抄表终端应支持4G通信&#xff0c;满足电信、移动、联通全网通的通信制式&#xff1b; &#xff08;2&#xff09;采集终端支持并兼容DL/T645-1997、DL/T645-2007、DL∕T698.45-2017版本电表&#xff1b; &#xff08;3&#xff09;采集终端以IR红外为数据采集方式&#xf…

pycharm import的类库修改后要重启问题的解决方法

通过将以下行添加到pycharm中的settings-> Build,Excecution,Deployment-> Console-> Python Console中&#xff0c;可以指示Pycharm在更改时自动重新加载模块&#xff1a; %load_ext autoreload %autoreload 2

SOLIDWORKS如何定制化异型孔向导及其孔标注

异型孔向导是SOLIDWORKS中一个极为方便的功能&#xff0c;只需要简单的几步设置就可以根据工程师设定好的标准、类型、大小创建符合标准的孔(包括:柱形沉头孔、锥形沉头孔、直孔、直螺纹孔、锥形螺纹孔等等)。此外由于工程图和三维模型的协同关联&#xff0c;生成孔的公差信息、…

Java将获取的参数,图片以及pdf文件放入到word文档指定位置

首先引入的依赖 <!-- poi库 --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId&…

VQA评测evaluation代码:gqa / aokvqa / vqav2 / scienceQA

VQA评测分多种&#xff0c;这里提几种&#xff0c;代码参考来自lavis和mmpretrain。 一、gqa评测&#xff08;只有一个answer&#xff09; 数据集下载及格式&#xff1a; blip中json地址 图片下载 # gqa格式已重新整理&#xff0c;特点是每个question对应的gt_answers只有一…

Linux操作系统知识点总结(附VMware、CentOS以及finalshell的安装教程)

1. 计算机的组成部分&#xff1a;输入单元&#xff0c;中央处理器&#xff08;CPU&#xff09;&#xff0c;输出单元。 CPU的种类包括&#xff1a;精简指令集&#xff08;RISC&#xff09;和复杂指令集&#xff08;CISC&#xff09;。 计算机的五大单元包括输入单元、输出单元、…

vue3+element+sortablejs实现table表格 行列动态拖拽

vue3elementsortablejs实现table动态拖拽 1.第一步我们要安装sortablejs依赖2.在我们需要的组件中引入3.完整代码4.效果 1.第一步我们要安装sortablejs依赖 去博客设置页面&#xff0c;选择一款你喜欢的代码片高亮样式&#xff0c;下面展示同样高亮的 代码片. npm install so…

【力扣算法09】之 6. N 字形变换 python

文章目录 问题描述示例1示例2示例3提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&…

组合(力扣)dfs + 回溯 + 剪枝 JAVA

给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2&#xff1a; 输入&#xff1a;n 1, …

设计模式之模板模式

1. 模板模式介绍 1、模板模式即模板方法模式自定义了一个操作中的算法骨架&#xff0c;而将步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构&#xff0c;可以自定义该算法的某些特定步骤&#xff1b; 2、父类中提取了公共的部分代码&#xff0c;便于代码复用&am…

rabbitmq延时队列自动解锁库存

使用了最终一致性来解决分布式事务 当order服务出现异常回滚&#xff0c;此时ware服务无法回滚&#xff0c;怎么办&#xff1f; 使用seata全局事务虽然能在order服务出现异常导致回滚时使其他服务的也能同时回滚&#xff0c;但在流量大的情况下是使用加锁的方式&#xff0c;效…

transformer 学习

原理学习: (3条消息) The Illustrated Transformer【译】_于建民的博客-CSDN博客 代码学习: https://github.com/jadore801120/attention-is-all-you-need-pytorch/tree/master/transformer mask学习: (3条消息) NLP 中的Mask全解_mask在自然语言处理代表什么_郝伟博士的…

HTTP原理解析-超详细

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

linux 安装 milvus 和 Attu

效果图 准备 建议使用docker安装&#xff0c;比较简单易操作 查看自己是否安装docker-compose docker-compose --version 如果docker-compose 的版本低于2.0&#xff0c;会报错&#xff0c;报错内容如下&#xff1a; 所以在此之前需要把docker-compose升级到2.0版本 升级d…

Kafka 概述、Filebeat+Kafka+ELK

Kafka 概述、FilebeatKafkaELK 一、为什么需要消息队列&#xff08;MQ&#xff09;1、使用消息队列的好处2、消息队列的两种模式 二、Kafka 定义1、Kafka 简介2、Kafka 的特性3、Kafka 系统架构 三、部署 kafka 集群1.下载安装包2.安装 Kafka3.Kafka 命令行操作 四、Kafka 架构…

解决win11选择打开方式时卡死

解决win11选择打开方式时卡死 问题描述 右键想要打开的文件&#xff0c;选择打开方式&#xff0c;点击在电脑上选择应用&#xff0c;在地址栏输入地址&#xff0c;卡死 解决方法 在桌面底部点击右键&#xff0c;打开“任务管理器” 搜索“选取应用”进程 右键该进程&#…

Java postman+ajax

0目录 1.PostMan 2.实战&#xff08;引入阿贾克斯&#xff09; 1.PostMan 定义 Postman是一个接口测试工具 doPost 和doGet方法 配置xml 测试 PostMan测试 Get 请求 Post请求 测试 新建add.jsp 利用jsp实现post请求 Service方法实现doPost…