请先保证RabbitMQ已安装,参考博客:https://blog.csdn.net/qq_33333654/article/details/103177091
基于之前的文章继续,基础篇第12章:https://blog.csdn.net/qq_33333654/article/details/103090717
注意环境与版本。
该文章参考博客:http://www.ityouknow.com/springcloud/2017/05/26/springcloud-config-eureka-bus.html
demo代码地址:https://download.csdn.net/download/qq_33333654/12014918
Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Spring bus的一个核心思想是通过分布式的启动器对spring boot应用进行扩展,也可以用来建立一个多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道,同样特性的设置(有些取决于通道的设置)在更多通道的文档中。
Spring cloud bus被国内很多都翻译为消息总线,也挺形象的。大家可以将它理解为管理和传播所有分布式项目中的消息既可,其实本质是利用了MQ的广播机制在分布式的系统中传播消息,目前常用的有Kafka和RabbitMQ。利用bus的机制可以做很多的事情,其中配置中心客户端刷新就是典型的应用场景之一,我们用一张图来描述bus在配置中心使用的机制。
从两张图上可以看出,第二张是比较合适的,其中提到的webhook是git版本库的一个插件,可以触发一些操作,比如提交代码时请求bus/refresh等,由于我个人的博客使用的是本地方式,所以可以暂时不考虑。
作为基础篇本次只需要才用一个server端和一个client端即可。
首先server端server项目,添加Pom文件依赖:
org.springframework.cloud spring-cloud-starter-bus-amqp
修改配置文件:
server: port: 9021 eureka: client: service-url: defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/,http://peer3:8002/eureka/ spring: application: name: spring-cloud-config-server profiles: active: native rabbitmq: host: localhost port: 5672 username: admin password: 123456 management: security: enabled: false
其中添加了rabbitmq的IP、端口、用户及密码,并放开了权限。其中用户和密码可以在rabbitmq中创建,也可以使用默认用户。
接下来修改客户端client项目。
添加pom依赖
org.springframework.cloud spring-cloud-starter-bus-amqp
配置文件application.yml修改:
server: port: 9031 spring: application: name: spring-cloud-config-client rabbitmq: host: localhost port: 5672 username: admin password: 123456 virtual-host: / cloud: bus: trace: enabled: true management: security: enabled: false #springboot 1.5.X以上默认开通了安全认证
bootstrap文件无需修改。
可以看到修改内容,添加了rabbitmq配置,同时开启了消息追踪。
cloud:
bus:
trace:
enabled: true
默认是false,开启消息追踪。
分别启动注册中心、server项目、client项目。
访问http://localhost:9031/hello
参看是否与server项目中的native-mysql.properties文件中内容一致,然后修改该内容文件。重启server项目,
然后使用postman或者cmd命令行请求
http://localhost:9031/bus/refresh
再次请求http://localhost:9031/hello观察变化,
同时可以使用Postman请求http://localhost:9031/trace
来查看消息详细情况。
消息Bug问题不多,主要问题就是安装配置与版本,注意环境问题即可。
本文才用的是RabbitMQ,同时也可以才用其他的,比如kafka等。