Spring cloud之Bus消息总线
前言
本节的知识将在博客:[https://blog.csdn.net/sinat\_32366329/article/details/92030415][https_blog.csdn.net_sinat_32366329_article_details_92030415] 的基础上添加bus支持从而实现基于bus的自动刷新配置信息。
Spring cloud bus目前只这次RabbitMQ/Kafka作为消息总线,并没有对ActiveMQ/RokcetMQ做支持。
本节使用比较多公司使用的RabbitMQ作为案例讲解。只要实现了RabbitMQ,那么至于切换为Kafka只需要切换maven包即可。
这里通过bus来自动刷新配置中心的配置信息。
刷新类型介绍
Bus消息总线的刷新类型有两类,一类是对client整合,通过client接口刷新一个client后,经过bus通知其他的client刷新信息。如下图:
Bus消息总线刷新类型第二种是通知统一配置管理中心,将由统一配置管理中心通知bus,然后告诉其他的微服务获取配置信息。如下图:
这里我们介绍基于统一配置中心的方式发送消息到bus,因为这个更加容易管理。本来就是统一配置管理中心,那么由它通知所有的微服务更新配置也是属于职责明确。
统一配置中心
Maven
添加一下依赖,这个依赖是针对rabbitmq实现的bus。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
配置文件
# 需要暴露对应的endpoints bus消息总线刷新:http://localhost:7010/actuator/bus-refresh
management:
endpoints:
web:
exposure:
include: "*
# 特殊说明一下,这里的都是rabbitmq和spring cloud的默认值,如果你的rabbitmq是这些参数可以不填写下面的信息
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
只要以上两个步骤就实现了统一配置管理中心对bus的整合。
微服务整改
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
对于spring cloud bus的整合就是这么简单,因为内部由默认的整合实现,所以只需要引入jar包即可。
测试验收
- 启动统一配置管理中心
- 启动微服务,get方式调用方法获取git上面的配置from参数
- 第一次请求返回的是git-dev-1.0
- 修改git上面的from参数,修改为git-dev-2.0
- 第二次请求返回的是git-dev-1.0,这里并没有返回git-dev-2.0。
- 通过post方式请求http://localhost:7000/actuator/bus-refresh这个是调用你统一配置中心整合了rabbitmq的bus后自己存在的方法,不用特意写一个。这样就会发送消息到rabbitmq,这样微服务就会收到通知,去请求配置。
- 重新请求返回的是git-dev-2.0了,这样就可以实现微服务不用重启就可以获取到最新的配置内容。
还没有评论,来说两句吧...