一、RabbitMQ 介绍
RabbitMQ 是一个开源、轻量、可靠的消息中间件(Message Broker),基于 AMQP 协议(高级消息队列协议),使用 Erlang 语言开发,天生高可用。
主要用于 应用之间异步解耦、流量削峰、消息广播、可靠投递,物联网、后端系统非常常用。
1、核心优势
- 可靠性:支持持久化、ACK 确认、事务、镜像队列,适合不允许丢消息业务(支付、订单)
- 灵活路由:内置 4 种交换机类型,满足不同分发逻辑
- 跨语言:Java/Python/Go/JS 都有客户端
- 集群 & 高可用:支持集群、镜像队列、延迟消息插件
- 轻量、部署简单,自带 web 管理后台
- 协议丰富:AMQP/MQTT,IoT 场景友好
2、典型应用场景
- 系统解耦(最核心):订单下单后发消息,库存、积分、物流各自订阅,主流程不依赖下游服务
- 异步处理:注册后发短信、邮件、图片转码,异步执行,提升接口响应速度
- 流量削峰填谷:秒杀、大促,瞬时请求先入队列,下游服务匀速消费,保护数据库
- 事件广播、通知推送:配置变更、系统公告,Fanout 广播给多个微服务
- 跨语言通信:多语言客户端(Java/Go/Python/JS)互通
- RPC 远程调用:自带 reply-to 机制实现请求应答
- 不适合:海量日志、高吞吐量场景弱于 Kafka(Kafka 适合日志、大数据流),单队列吞