-
RabbitMQ基础
- RabbitMQ概述
- RabbitMQ环境
-
RabbitMQ使用
- 简单模式
- 工作模式
- 发布订阅模式
- 路由模式
- 主题模式
- RPC模式
1 RabbitMQ简介
RabbitMQ 是一个开源的消息队列系统,常被用于实现应用程序之间的异步通信。
2 RabbitMQ核心
(1) 生产者(Producer):发送消息的应用程序;
(2) 消费者(Consumer):接收并处理消息的应用程序;
(3) 交换机(Exchange):接收生产者发送的消息,并根据路由规则(Binding)将消息转发到对应的队列;
(4) 队列(Queue):存储消息的缓冲区,消息最终会被发送到队列中等待消费者处理;
(5) 路由键(Routing Key):交换机根据路由键判断消息应转发到哪些队列;
(6) 绑定(Binding):建立交换机与队列之间的关联关系,并指定路由规则。
3 RabbitMQ原理
1) 生产者将消息发送到交换机,并指定一个路由键(Routing Key);
2) 交换机根据预设的绑定规则(结合路由键),将消息转发到一个或多个队列;
3) 消费者从队列中获取并处理消息;
4) 消费者处理完消息后,向 RabbitMQ 发送确认信号,RabbitMQ 收到确认后,将该消息从队列中删除。
4 RabbitMQ作用
(1) 解耦系统:将原本需直接交互的多个应用程序通过消息队列间接通信,降低系统间耦合度,各模块可独立开发、部署和扩展。
(2) 异步处理:非核心流程(如日志记录、邮件通知)无需同步主业务同步执行,通过消息队列异步处理,提升主流程响应速度。
(3) 流量削峰:在高并发场景(如秒杀、抢购)中,消息队列可暂存突发请求,避免直接冲击后端服务导致崩溃,消费者按能力逐步处理。
(4) 数据缓冲:当上下游系统处理速度不匹配时(如数据导入时上游生成快、下游入库慢),队列可平衡速度差异,避免数据丢失。
(5) 可靠通信:通过消息持久化、确认机制等保障消息不丢失,解决分布式系统中跨服务通信的可靠性问题。
5 RabbitMQ应用
(1) 订单处理:用户下单后,主流程仅完成订单创建,通过消息队列异步触发库存扣减、物流通知、支付对账等后续操作。
(2) 日志收集:各服务节点产生的日志通过消息队列汇总到日志系统,实现集中存储和分析,避免日志写入直接占用业务资源。
(3) 实时通知:用户操作(如注册、下单)后,通过队列异步发送短信、邮件或 App 推送,不阻塞主业务流程。
(4) 分布式任务调度:将定时任务(如数据备份、报表生成)作为消息发送到队列,由多个消费者节点并行处理,提高任务执行效率。
(5) 秒杀系统:秒杀请求先进入消息队列,后端服务按队列顺序处理,防止超卖并保护系统不被流量峰值击垮。
(6) 跨系统数据同步:当多个系统需要共享数据(如用户信息更新)时,通过消息队列广播变更消息,确保各系统数据一致。