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) {
// 处理订单
}
消息队列是异步架构的利器,但引入后会增加系统复杂度,监控、重试、幂等都需要配套设计。