栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud的config 和 bus 整合产生动态刷新

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud的config 和 bus 整合产生动态刷新

SpringCloud中的配置中心(config)和消息总线(Bus)的整合使用,解决的是项目中的配置文件的更改后的及时刷新!!!
config配置中心
配置 服务端的config,

	
            org.springframework.cloud
            spring-cloud-config-server
     

yml的配置:

server:
  port: 3344
spring:
  application:
    name: springcloudconfigserver #名称
  cloud:
    config:
      server:
        git:
          search-paths:
            - springcloud
          uri: https://gitee.com/search122/springcloud.git
          default-label: master

我们使用配置管理对远程仓库进行拉取代码配置文件

  1. uri 表示的是gitee的仓库地址
  2. search-paths 表示的是gitee的仓库的名称
  3. default-label 表示的是哪一个分支

配置好了config配置中心之后我们启动主启动类。通过浏览器进行访问当前的3344端口http://localhost:3344/master/application-pro.yml 查找到配置文件
(这里的gitee可以直接访问,已经开启了一个仓库,也有配置文件,你们可以直接获取)

config配置中心客户端:

 
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-config
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.cloud
            spring-cloud-starter-bootstrap
            3.0.2
        
        
            org.springframework.boot
        spring-boot-starter-actuator

上面依赖的意思分别对应的是 web eureka注册中心 bootstrap配置文件 监控中心

config客户端配置中心的配置文件采用的是bootstrap.yml,所以对应的依赖必不可少。
客户端配置yml:

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8080/eureka/
spring:
  application:
    name: configclient2
  cloud:
    config:
      label: master
      name: application
      uri: http://localhost:3344
      profile: pro
  1. label 表示的是当前uri的哪个分支
  2. name 表示当前拉取仓库的哪个文件名称(因为仓库有application-pro.yml文件)
  3. profile:文件采用的是’-‘分离的,所以这里的Pro表示的文件’-‘后面的内容。
  4. uri: 表示的是当前项目的config服务端配置的端口是3344。
    配置后之后启动浏览器进行过访问当前3355端口,意思就是获取通过3355获取到3344,然后通过3344获取到远程仓库的配置文件的信息。
    如果能够访问到说明已经成功配置好了配置中心。

问题来了:
缺点,如果运维人员对远程仓库进行修改了配置文件,那么只有config服务端能够实时的刷新,而其他config客户端的服务没法动态的获取。

如何解决:
需要通过命令行的方式进行激活一下config客户端的服务才可以生效。

整改1:
修改配置中心的服务3355,更改添加一个监控的依赖,再加一个注解,再yml文件写一段配置即可。3步骤、

        
            org.springframework.boot
        spring-boot-starter-actuator
    



再次启动,重复上次的操作,修改之后看看有没有进行动态刷新,因为此时我们已经配置了监控,那么使用命令行的方式curl -X POST “http://localhost:3355/actuator/refresh”
再次查看浏览器是否刷新。

重头戏:
每次都需要命令行对单个客户端配置中心进行激活,那样很麻烦,所以使用消息总线bus.
需要用到RabbitMq,你们自己去官网下载,只要能运行RabbitMQ就行
3344服务端整改:

        
            org.springframework.cloud
            spring-cloud-starter-bus-amqp
        

yml进行修改:

添加rabbitmq的配置信息
更改监控的信息bus-refresh。如果遇到bug百度一下。

之后再次启动服务修改远程仓库的信息之后,我们不需要重新激活每一个客户端,只需要激活配置中心3344即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/826571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号