高并发下如何保证消息消费一次

我的博客地址

先确保消息不丢失, 后确保消息消费消费一次

1. 生产者

可以开启ACK消息确认机制, 只有生产者收到ACK代表消息发送成功; 没有收到就需要重新发送消息

2. 消息队列

消息持久化先保持到缓存,缓存满时才进行持久

  • 异步持久化: 接收消息后会先同步到缓存(同时发送ACK), 缓存满后才同步到磁盘当中中
  • 同步持久化:: 接收消息后会立刻同步磁盘

3. 消费者(可重复消费消息)

引入消息记录表(或是缓存), 判断消息是否被消费完成

YES
YES
NO
NO
消费开始
插入消息记录表是否成功
执性业务代码
是否执行成功
更新任务状态完成
删除消息记录表信息
发送延迟消息
检查消息状态是否完成
返回消费成功

注: 当执行代码没有及时删除消息记录录, 会出现循环判断消息是否消费完成, 需要开启后台定时根据业务策略处理长时间未完成的消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值