为了保证极端场景下消息能100%推送成功, 发布消息时, 具备以下条件
- 一个MQ Channel只用来干一件事情, 即推送消息
- 开启Channel的Confirm功能
- 发布一个消息
- 确认一个消息(Confirm)
如果收到一个错误Confirm, 代表发布不成功, 业务代码需要做处理
高并发场景, 建议维护一个Channel来做大量发布消息任务.
极端场景举例
- 两台机器的MQ集群(node1/node2), 队列是镜像模式. 500个连接频繁的发布数据, 此时如果停止node2, 如果没有
Confirm来保证会存在大量消息没有发布成功.