一、介绍
Spring Cloud Bus 使用消息中间件连接分布式系统的各个节点,然后可以使用它来广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,总线就像一个分布式执行器,用于启动一个扩展的Spring引导应用程序,但它也可以用作应用程序之间的通信通道。目前只实现了一个AMQP协议的中间件作为传输。Spring Cloud Bus目前只实现了Rabbitmq 和kafka作为消息中间件。
二、环境准备
下面以Rabbitmq 作为消息中间件讲解Spring Cloud Bus
需要下载安装erlang,rabbitmq, 启动rabbitmq服务。
三、在Config Client中增加一个依赖包spring-cloud-start-bu-amqp
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>在bootstrap.yml 增加配置rabbitmq相关配置
spring: application: name: spring-cloud-config-client profiles: active: dev cloud: config: uri: http://localhost:8888 profile: dev rabbitmq: host: localhost port: 5672 username: guest password: guest management: security: enabled: false server: port: 9000
host 主机名
port:端口号
username:用户名
password:密码
启动两个实例,使用两个端口号:9000 和9001 ,修改foo配置信息 ,我们只更新9000这个应用的配置,如果9001也更新了,说明Spring Cloud Bus 起作用了。在命令行执行 curl -X POST http://localhost:9000/bus/refresh 后
分别访问 http://localhost:9000/hi ,http://localhost:9001/hi 会发现返回来的信息都是最新的 。说明更新成功了。
参考文档 http://projects.spring.io/spring-cloud/spring-cloud.html#_spring_cloud_bus