Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。目前唯一实现的方式是用AMQP消息代理作为通道,同样特性的设置,在更多通道的文档中,目前常用的有Kafka和RabbitMQ
Spring Cloud Bus做配置更新的步骤:
提交代码触发post给客户端A发送bus/refresh客户端A接收到请求从Server端更新配置并且发送给Spring Cloud BusSpring Cloud bus接到消息并通知给其它客户端其它客户端接收到通知,请求Server端获取最新配置全部客户端均获取到最新的配置 什么是总线
在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的消息主题,并让系统中所有的微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所有称它为消息总线,在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息
基本原理
ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus),当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一个Topic的服务就能得到通知,然后去更新自身的配置
服务端和客户端添加依赖
bootstrap.properties 配置文件需要增加RebbitMq的相关配置
客户端暴露监控点 management.endpoints.web.exposure.include='bus-refresh'
服务端暴露监控点 management.endpoints.web.exposure.include=*
修改完git配置文件后,发送post请求, curl -X POST "http://localhost:3344/actuator/bus-refresh"
定点通知 路径后指定微服务名称+端口