SpringCloud文章系列
- SpringCloud
- SpringCloud-注册中心
- SpringCloud-配置中心
- SpringCloud-链路跟踪
- 【当前文章】SpringCloud-消息总线
- SpringCloud-API网关
- SpringCloud-异步消息
- SpringCloud-同步调用
- SpringCloud-断路降级
- SpringCloud-监控管理
- SpringCloud-番外篇-临时任务
- SpringCloud-番外篇-文档生成
- SpringCloud-番外篇-源码解析
接入说明
- 目前采用最新的1.xRelease版本:1.5.15.RELEASE
- SpringCloud项目可以在start.spring.io下载,不过更方便的应该是通过idea新建项目,建立Spring Initializr项目
- 我一般习惯将具体实现服务用具体的服务名,而公共组件用service-xxx来命名,当然还有一些比较固定名字的公共组件
- 基于配置中心,请先按照配置中心章节,配置公共配置
- 依赖链路追踪章节
Bus
1. 新建项目
新建artifactId为service-bus的服务
2. 导入依赖
依赖说明
- actuator用于暴露监控的接口
- eureka是Eureka客户端,注册到注册中心
- config是Config客户端,从配置中心拉取配置
- sleuth + zipkin是链路追踪客户端,用于监控链路调用
- bus-kafka是基于kafka的bus消息总线客户端,用于接收消息总线异步事件
1 | <dependency> |
3. 编写启动类
不需要添加任何注解,bus依赖进来后扩展了SpringBoot的endpoint
4. 修改配置
1 | server.port=8901 |
bus.trace.enabled可以开启bus操作的链路跟踪,每次客户端处理都是异步接收消息去处理的,所以可以观察到每个客户端接收消息时间与ack的情况
由于bus依赖于异步消息Stream,这里采用kafka,所以需要配置下kafka的zk与brokers的地址(这里可以看下之前kafka搭建的文章)
5. 启动main
6. 验证
访问 http://localhost:8761/ 看到service-bus已经注册了一台
使用curl或者Postman用POST方式访问 http://localhost:8901/bus/refresh 可以通过/trace看到每台机器ack的情况
如果开启了链路追踪,也可以通过链路追踪看到每次bus请求的情况
客户端使用
1. 添加依赖
1 | <dependency> |
2. 开启注解
无注解,引入依赖既开启
3. 修改配置
1 | #kafka |
依赖kafka,与服务端统一kafka
扩展
- 通过bus调用的命令不加参数是全局的,可以通过增加destination参数,如/bus/refresh?destination=business-service:**,只会请求business-service的所有服务
- 如果访问出现401,则配置需要加上management.security.enabled=false
- 很多BUS功能单一,一般主要与配置中心配合,所以往往BUS的功能可以直接集成在配置中心中,方便管理
其他消息总线
除了kafka的支持,还可以通过rabbitMQ
快速接入
略…