day06
- Rabbitmq
- Docker运行Rabbitmq服务:
- 工作模式合理分发消息:
- 防止服务器崩溃,消息丢失:
- 常见的面试题:rabbitmq防止消息丢失:
- Spring cloud config + BUS 配置刷新
- Sleuth + Zipkin 链路跟踪
Rabbitmq
Docker运行Rabbitmq服务:
克隆 docker base: rabbitmq
设置固定ip:
./ip-static
ip: 192.168.64.140
ifconfig
#如果设置ip出错,参考上面 ip 设置,执行两条命令
上传文件到 /root/
DevOps课前资料\docker\
导入镜像:
docker load -i
docker images
参考 **** 笔记启动 rabbitmq
RabbitMQ
Docker运行rabbitmq
工作模式合理分发消息:
使用手动确认模式 消息分发不合理的原因,是服务器不知道消费者有没有处理完消息。 使用手动确认模式,不仅是保证消息被正确处理,也可以让服务器知道消费者有没有处理完消息。
qos=1 每次只接收1条消息,处理完成之前不接收下一条。 只在手动确认模式才有效。
防止服务器崩溃,消息丢失:
消息的持久化:
队列设置成持久队列
发送的消息设置成持久消息
常见的面试题:rabbitmq防止消息丢失:
手动确认模式 保证消息被正确处理,不丢失消息
消息的持久化 防止服务器崩溃丢失消息
消息服务使用案例
BUS 配置刷新 通过Rabbitmq发送刷新指令到各个模块,各个模块接收到指令后执行刷新操作 使用Rabbitmq的主题模式
Spring cloud config + BUS 配置刷新
修改 2,3,4,9
添加依赖:
bus
rabbitmq
binder-rabbit
在 09 中添加 actuator 依赖
yml 配置添加 rabbitmq 连接配置
修改 09 的
修改 config 目录的三个配置文件,提交推送到远程仓库
修改 09 的 yml 配置,暴露 bus-refresh 刷新路径
=bus-refresh
测试:
GET http://localhost:6001/actuator
查看确认,是否已经暴露 bus-refresh 刷新路径
POST http://localhost:6001/actuator/bus-refresh
观察 2,3,4 的控制台,有没有执行刷新操作
Sleuth + Zipkin 链路跟踪
Sleuth
产生链路跟踪日志的工具
添加 Sleuth 只需要添加它的依赖,0配置
A --> B --> C --> D
日志数据:
A, 87J6H5GF34F, 87J6H5GF34F, true
B, 87J6H5GF34F, OI67U545Y43, true
C, 87J6H5GF34F, U45Y46U56Y3, true
D, 87J6H5GF34F, U545T234264, true
修改 2,3,4,6,添加 sleuth 依赖
链路跟踪日志发送到 rabbitmq:
修改2,3,4,6添加依赖: zipkin client
单独修改 6,添加 rabbitmq
rabbitmq依赖
rabbitmq连接配置
yml配置发送方式: =rabbit
06修改
2,3,4修改 config 目录的三个文件,再提交推送
启动 zipkin 服务:
在磁盘找到 zipkin 的 jar 文件,地址栏输入 cmd 启动命令行,执行启动命令:
#旧版本
java -jar zipkin-server-2.12. --=amqp://admin:admin@192.168.64.140:5672
#新版本
java -jar zipkin-server-2.23. --=amqp://admin:admin@192.168.64.140:5672