FAQ
Q: 如何确保消息不丢失?
Q: mq 的缺点
Q: 如何避免消息重复投递或重复消费?
在消息生产
时,MQ 内部针对每条生产者发送的消息生成一个 inner-msg-id,作为去重的依据(消息投递失败并重传),避免重复的消息进入队列;
在消息消费
时,要求消息体中必须要有一个 bizId(对于同一业务全局唯一,如支付 ID、订单 ID、帖子 ID 等)作为去重的依据,避免同一条消息被重复消费
Q: rabbitmq 怎么避免消息丢失?
消息持久化
ACK确认机制
设置集群镜像模式
消息补偿机制
Q: 要保证消息持久化成功的条件有哪些?
参考资料
https://zhuanlan.zhihu.com/p/62087283
https://juejin.im/post/5dfc93a5f265da339b500273#heading-7