-
bbianji8 用户
RabbitMQ 消息队列完全教程:从安装到用消息队列解耦你的高并发系统
下单后还要发短信、扣库存、推积分,一个接口慢就全挂?消息队列正是用来「削峰填谷、异步解耦」的利器。RabbitMQ 以易上手、文档好、协议全著称,是中小团队首选。本文带你从零跑通「生产者→交换机→队列→消费者」全流程。
一、原理背景
1.1 为什么需要消息队列
没有 MQ 时,订单服务直接同步调用库存、短信、积分,任一依赖慢/挂,订单就失败,且流量洪峰直接打垮下游。消息队列把「现在必须立刻做完」变成「先记下来,慢慢做」:
- 异步:下单立即返回,后续动作后台消费。
- 解耦:订单服务不关心谁来处理,只管发消息。
- 削峰:瞬时 1 万请求先堆在队列,下游按自己节奏消费。
1.2 核心概念
- Producer(生产者):发消息的程序。
- Consumer(消费者):收消息处理的程序。
- Queue(队列):存消息的缓冲区,先进先出。
- Exchange(交换机):接收生产者消息并按规则「路由」到队列。常见类型:
direct:精确匹配 routing key。fanout:广播给所有绑定队列,无视 key。topic:按模式(如order.*)模糊匹配,最灵活。headers:按消息头匹配(少用)。
- Binding(绑定):把队列和交换机连起来并指定 routing key。
- ACK(确认):