bus支持rabbitmq和kafka,因此需要其中一个mq服务器启动起来。看个人了。下面实现一次post请求,然后全局广播给其他微服务实例
1. 给 注册中心config 和 服务实例 添加 springcloud-bus-rabbitmq的依赖,如下:
<!-- 添加消息总线RabbitMQ支持 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
2. 给configServer(注册中心)添加下面的yml配置:
server:
port: 3344
spring:
rabbitmq:
host: 192.168.113.6 #rabbitmq所在的IP
port: 5672 #rabbit暴露的服务端口
username: guest
password: guest
management:
endpoints:
web:
exposure:
include: "bus-refresh" #暴露bus-refresh这个端点(得这个端点,其他不行),到时候手动给这个端点发送post请求
3. 然后是 服务实例 添加下面的yml配置:
spring:
rabbitmq:
host: 192.168.113.6 #rabbitmq所在的IP
port: 5672 #rabbit暴露的服务端口
username: guest
password: guest
management:
endpoints:
web:
exposure:
include: "*"
我讲一下,为什么服务实例也得暴露端点?之前我们是给服务实例发送post请求才加上这段配置用于暴露端点的,现在虽然我们不给服务实例发post了,但是 消息总线 会发!
4. 给所有服务实例 需要刷新的业务类 加上 @RefreshScope
下面使用curl发送post请求给configServer:curl -X POST http://localhost:3355/actuator/bus-refresh;再次强调,/bus-refresh前面是固定的