← 返回生产场景
📬 消息队列
选型 / 可靠性 / 顺序 / 积压 / 重复消费
🤔
什么时候用MQ
① 异步(发通知不阻塞下单)② 解耦(订单服务不直接调短信服务)③ 削峰(秒杀10万请求排队消费)。
MQ
吞吐
延迟
适合
RabbitMQ
万级
微秒
业务消息/灵活路由
Kafka
百万级
毫秒
日志/大数据
RocketMQ
十万级
毫秒
电商/事务消息
🛡️
消息不丢(三环节)
核心
环节
解法
生产者→MQ
确认机制+重试
MQ自身
持久化+副本
MQ→消费者
手动ACK(处理完才确认)
🔁
幂等(防重复消费)
// MQ保证"至少一次"投递,重复必然发生
String key =
"msg:done:"
+ msg.getMsgId();
boolean
isNew = redis.setIfAbsent(key,
"1"
,
24
h);
if
(!isNew)
return
;
// 已处理过,跳过
生产场景 · 消息队列 · 全栈资料库