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

15 篇文章 0 订阅

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

	<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
     </dependency>

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配置中心客户端:

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>

上面依赖的意思分别对应的是 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步骤、

        <dependency>
            <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

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

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

yml进行修改:
在这里插入图片描述
添加rabbitmq的配置信息
更改监控的信息bus-refresh。如果遇到bug百度一下。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值