RabbitMQ 的功能和定位
RabbitMQ 是基于 AMQP 协议的开源消息队列,由 Erlang 实现,稳定性和可靠性非常好。适合可靠投递、灵活路由、跨语言的企业级场景,是传统企业和金融行业常用的消息中间件。
核心概念 / AMQP 模型
- Producer:生产者,将消息发送到 Exchange。
- Exchange:交换机,负责按照路由规则把消息转发到队列。
- Queue:队列,实际存储消息并被消费者拉取。
- Binding:绑定关系,定义 Exchange 与 Queue 的路由规则。
- RoutingKey:路由键,用于匹配绑定规则。
- Consumer:消费者,从队列中消费消息,可以手动 / 自动 ACK。
常见 Exchange 类型
- direct:按 routingKey 精确匹配路由,适合点对点消息。
- fanout:广播模式,消息会发送到所有绑定的队列。
- topic:按通配符匹配 routingKey,支持多级主题订阅。
- headers:按消息头匹配路由,使用较少。
典型使用场景
- 订单、支付等关键链路的可靠异步通知(手动 ACK + 死信队列)
- 多服务之间的发布订阅(topic / fanout 模式)
- 延时任务(基于 TTL + 死信队列实现延时队列)
- 跨语言、跨平台系统集成(多语言客户端支持好)
优缺点
优点:
- 遵循 AMQP 标准,协议成熟、跨语言友好
- 路由模型灵活(多种 Exchange)
- 支持消息确认、重试、死信队列等可靠性机制
缺点:
- 吞吐量不如 Kafka、RocketMQ,适合中等规模场景
- 集群和镜像队列配置相对复杂
- 大规模堆积消息时性能下降明显