加载中...
发布确认是消息队列中的一种可靠投递机制,消息代理在成功接收并持久化生产者发出的消息后回送确认,使生产者能够确知消息未丢失。它是保证不丢消息的关键手段。

| 模式类别 | 消息可靠性 |
| 确认方向 | 代理到生产者 |
| 确认方式 | 异步、可批量 |
| 代表实现 | RabbitMQ |
| 配套机制 | 持久化、幂等消费 |
发布确认模式(Publisher Confirms)是消息中间件中保证生产者可靠投递的一种机制,消息代理在收到并妥善保存消息后向生产者返回确认信号,从而让生产者在确认到达前不认为发送已成功。
在异步消息系统中,生产者把消息发往代理后,如果不做任何确认,一旦网络中断或代理宕机,消息可能悄无声息地丢失而生产者毫不知情。发布确认机制为此而生:代理在把消息路由到队列并按需持久化后,异步地回送一个带序号的确认,生产者据此判断哪些消息已安全落地,未确认的可重发。
该机制在金融交易、订单处理等对消息不可丢失有严格要求的场景中不可或缺。以 RabbitMQ 为代表的消息代理提供了发布确认能力,配合队列持久化和消费者手动确认,可构建端到端的可靠投递链路。
问:发布确认和事务有什么区别?答:事务方式每发一条都要同步等待提交,性能较低;发布确认采用异步批量的方式,在保证可靠的同时吞吐更高,因此实践中通常优先选用发布确认。
问:收到确认就一定不会重复吗?答:不能保证。重发可能造成重复投递,消费端仍需配合幂等处理或去重机制,发布确认解决的是不丢,而非不重。

| 模式类别 | 消息可靠性 |
| 确认方向 | 代理到生产者 |
| 确认方式 | 异步、可批量 |
| 代表实现 | RabbitMQ |
| 配套机制 | 持久化、幂等消费 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧