rabbitmq怎么实现百分百投递?(保证消息不丢失)

本文探讨了RabbitMQ的消息确认机制,如何通过数据库和重试策略保证消息不丢失,以及消费端的自动ack转手动ack和备份交换机的使用。还涉及幂等性处理和关键技术如乐观锁、UUID的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消息确认机制就是生产端投递的消息一旦投递到RabbitMQ后,RabbitMQ就会发送一个确认消息给生产端,让生产端知道我已经收到消息了,否则这条消息就可能已经丢失了,需要生产端重新发送消息了。

消息持久化:发送消息前先将消息保存到数据库中,有一个状态字段status=0,表示消息发送了但还没收到确认;收到确认后将status设为1,表示RabbitMQ已收到消息。可能消息刚发出去还没来得及确认,这边定时器刚好检索到这条status=0的消息,所以要设置时间)
还没收到确认的消息取出重发 (消息重发可能会造成幂等性问题,这里消费端要做幂等性处理),可能重发还会失败,所以还要添加一个最大重发次数字段retry_count,超过就做另外的处理。乐观锁机制、UUID可以解决幂等性问题

消费端消息不丢失处理:将自动ack机制改为手动ack机制

使用备份交换机,当主交换机投递失败时,将消息转发到备份交换机,由备份交换机进行消息投递,也可以实现消息的不丢失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值