RabbitMQ - Confirm 发布消息的Ack

103 阅读1分钟

为了保证极端场景下消息能100%推送成功, 发布消息时, 具备以下条件

  1. 一个MQ Channel只用来干一件事情, 即推送消息
  2. 开启Channel的Confirm功能
  3. 发布一个消息
  4. 确认一个消息(Confirm)

如果收到一个错误Confirm, 代表发布不成功, 业务代码需要做处理 image.png

高并发场景, 建议维护一个Channel来做大量发布消息任务.

极端场景举例

  1. 两台机器的MQ集群(node1/node2), 队列是镜像模式. 500个连接频繁的发布数据, 此时如果停止node2, 如果没有Confirm来保证会存在大量消息没有发布成功.