搜索
您的当前位置:首页正文

spring cloud bus

来源:二三娱乐

Bus是一个消息总线,config-server和其他服务都通过Bus监听一个消息队列(本例用Kafka), 通过它可以实现配置中心变动后,所有服务实例都及时刷新配置。

本例是在spring cloud config的基础上来的。

Config Server 配置

引入maven:

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

修改bootstrap.yml

spring:
  application:
    name: CONFIG-SERVER

  # 配置一个数据源
  datasource:
    url: jdbc:mysql://ubuntu:3306/spring?characterEncoding=utf-8&useSSL=true
    username: root
    password: root


  profiles:
    # 此处必须指定配置仓库的类型, 可以选git snv等, 也可以写多个. 这里用的是数据库.
    active: jdbc
  cloud:
    config:
      server:
        jdbc:
          # 重写查询Sql, 原SQL中KEY是关键字需要加反引号
          sql: 'SELECT `KEY`, VALUE from PROPERTIES where APPLICATION=? and PROFILE=? and LABEL=?'

    # Bus使用Stream来连接Kafka,会同时访问zookeeper和kafka。
    stream:
      kafka:
        binder:
          zkNodes:
            192.168.40.128
          brokers:
            192.168.40.128
    # Bus的相关配置。
    bus:
      trace:
        enabled: true

management:
  security:
    enabled: false


主类上添加 @EnableKafka

Client配置

客户端服务引入maven和配置文件,跟Server相同。
唯一的区别是Client不需要加主类注解。

配置及时刷新

完成上面的配置之后,配置中心和下游服务就通过kafka连接了,所有的服务都会监听Kafka的一个Topic(SpringBus,名字可配置),此时修改配置数据表,然后访问任意服务的 /bus/refresh 端点即可实现所有服务刷新配置。

image.png
Top