先确保消息不丢失, 后确保消息消费消费一次
1. 生产者
可以开启ACK消息确认机制, 只有生产者收到ACK代表消息发送成功; 没有收到就需要重新发送消息
2. 消息队列
消息持久化先保持到缓存,缓存满时才进行持久
- 异步持久化: 接收消息后会先同步到缓存(同时发送ACK), 缓存满后才同步到磁盘当中中
- 同步持久化:: 接收消息后会立刻同步磁盘
3. 消费者(可重复消费消息)
引入消息记录表(或是缓存), 判断消息是否被消费完成
注: 当执行代码没有及时删除消息记录录, 会出现循环判断消息是否消费完成, 需要开启后台定时根据业务策略处理长时间未完成的消息
评论区