一、何为RabbitMQ,作用是什么?
RabbitMQ 是基于AMQP的开源消息队列,作为分布式系统中的"中转站",实现消息的存储、转发与路由,解耦生产者与消费者。
二、RabbitMQ的模式及使用场景
1.简单模式:
原理:生产者将消息发送至消息队列,消费者从队列中获取并处理消息,整个过程无需其他中间组件参与。
特点:
- 采用一对一通信模式
- 存在消息堆积风险,可能导致队列阻塞
应用场景:适用于对消息处理实时性要求不高的场景,如日志记录、任务通知等。
2.工作队列模式:
原理:生产者将消息发送至消息队列后,可由多个消费者同时获取并处理消息。
特点:
- 采用一对多模式,支持多消费者并行处理
- 有效分担系统负载,提升处理效率
- 实现服务间的动态负载均衡
应用场景:
- 订单处理系统
- 批量图片上传任务
- 其他需要并行处理的消息业务场景
3.发布/订阅模式:
工作原理:生产者将消息发送至交换机,交换机将消息广播至所有绑定的队列,确保每条消息都能被所有消费者接收。
核心特点:
- 一对多消息分发模式
- 单条消息可被多个消费者并行处理
- 消费者之间相互独立,互不干扰
典型应用:适用于系统通知推送、多节点数据同步等需要广播消息的业务场景。
4.路由模式:
原理:生产者发送消息时需指定路由键,交换机会将该键与队列绑定的路由键进行精确匹配,只有完全一致时消息才会被路由到对应队列供消费者接收。
特点:
- 实现消息的精确路由转发
- 仅符合路由规则的消费者才能消费消息
应用场景:
- 日志分级处理(如DEBUG/INFO/ERROR级别分流)
- 订单状态变更通知(如待支付/已发货/已完成等状态更新)
5.主题模式:
原理:在路由模式基础上进行扩展,新增通配符匹配路由键功能
特点 :
采用主题筛选机制,消费者预先订阅特定主题,仅接收完全匹配的消息
应用场景 :
支持多维度的消息路由匹配。例如:
商品.手机.促销可被商品.*.促销或商品.手机.#接收北京.订单.创建可被*.订单.*或北京.#接收