技术笔记

← 返回笔记列表

RabbitMQ 消息队列实战指南

📅 2026/04 🏷️ RabbitMQ 中间件

RabbitMQ 是基于 AMQP 协议的开源消息代理,常用于异步解耦、流量削峰、任务分发等场景。本文梳理核心概念、Exchange 类型以及消息可靠性保证。

一、核心概念

  • Producer:生产者,发送消息
  • Consumer:消费者,接收并处理消息
  • Exchange:交换机,根据路由规则分发消息
  • Queue:队列,存储消息
  • Routing Key:路由键,Exchange 根据它决定消息去向

二、Exchange 类型

  • Direct:精确匹配路由键
  • Fanout:广播到所有绑定队列
  • Topic:支持通配符匹配
  • Headers:根据消息头匹配

三、消息可靠性

要保证消息不丢失,需要从三个层面入手:

  • 生产者确认:开启 confirm 机制,确保消息到达 Exchange
  • 队列持久化:队列和消息都设置 durable
  • 消费者确认:手动 ack,业务处理成功后再确认

四、Spring AMQP 示例

@RabbitListener(queues = "order.queue")
public void handleOrder(Order order) {
    // 处理订单
}
消息队列是异步架构的利器,但引入后会增加系统复杂度,监控、重试、幂等都需要配套设计。