一、关于

Spring Cloud Bus 将分布式系统的节点与轻量级消息代理连接起来。然后可以广播管理指令(例如配置更改),管理分布式系统中的所有节点。

本文代码仓库地址:https://github.com/lazyrabb1t/rabb-springcloud-demo

二、使用Spring Cloud Bus实现配置的动态刷新

1、安装kafka
2、config-server模块配置

添加依赖:

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

添加kafka连接地址以及暴露刷新配置的端口:

server:
  port: 16000
spring:
  application:
    name: rabb-config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/lazyrabb1t/test-springcloud-config.git
#          username: username@xx.xx
#          password: xxxxxx
          clone-on-start: true
          timeout: 50
          force-pull: true
  kafka:
    # kafka连接地址
    bootstrap-servers: 127.0.0.1:9092
management:
  endpoints: #暴露bus刷新配置的端点
    web:
      exposure:
        include: 'busrefresh'
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10002/eureka/
...
3、config-client模块配置

添加依赖:

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

添加配置:

server:
  port: 17000
spring:
  application:
    name: rabb-config-client
  cloud:
    config:
#      uri: http://localhost:16000
      profile: dev
      label: master
      name: rabb
      discovery:
        enabled: true
        service-id: RABB-CONFIG-SERVER
  kafka:
    # kafka连接地址
    bootstrap-servers: 127.0.0.1:9092
management:
  endpoints:
    web:
      exposure:
        # 暴露刷新配置端点
        include: 'refresh'
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10002/eureka/
4、启动eureka-server、config-server和config-client模块进行测试

修改git中对应的配置,然后调用配置中心服务端的busrefresh端点

curl -X POST http://localhost:16001/actuator/refresh

再次访问客户端程序接口就可以发现配置已经更新

参考

http://www.macrozheng.com/#/cloud/bus