bus 支持 kafka 和 RabbitMQ。 这里使用RabbitMQ。
新建三个模块演示, A 为注册中心,抓取git仓库中的配置文件。
BC项目 是客户端模块,从注册中心中获取配置文件信息。
A模块配置
引入消息中间件的依赖
<!-- 消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
配置文件
server:
port: 3344
spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: https://github.com/zhaokun-12/springcloud-config.git
search-paths: springcloud-config
username: username
password: password
label: main
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
eureka:
client:
# 注册到 服务中心
register-with-eureka: true
# 是否从注册中心 获取注册信息。 集群必须设置为true 才可以使用ribbon 使用负载均衡
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
#,http://eureka7002.com:7002/eureka/
management:
endpoints: #暴露bus 刷新配置的端点
web:
exposure:
include: 'bus-refresh'
启动类上增加@EnableConfigServer 注解
客户端BC与配置中心A 一样引入rabbitmq 依赖,同时配置rabbitmq连接。
这里如果rabbitmq 不在本机安装,使用guest可能会因为安全问题连接不上,在配置文件rabbitmq.config 中添加
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, []}]}
].
允许通过ip地址连接。
启动三个服务。
修改git配置文件内容
话题通知
发送 post localhost:3344/actuator/bus-refresh 通知客户端更新
定点通知
post localhost:3344/actuator/bus-refresh/appname:port 通知客户端更新
一定需要加上
<!--监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>