解决方案`* 先发送半消息(Half Msg , 类似 Prepare 操作) , 不会投递给消费者
- 半消息发送成功 , 再执行 DB 操作
- DB 操作执行成功后 , 提交半消息
- 1 异常 , 半消息发送失败 , 本地 DB 没有执行 , 整个操作失败 , DB/消息的状态一致(都没有提交)
- 2 异常/超市生产者以为失败了 , 不执行 DBbroker 存储半消息成功 , 等不到后续操作 , 会询问生产者是提交还是回滚(第6步)
- 3 DB操作失败:生产者在第 4 步告知 broker 回滚半消息
- 4 提交/回滚半消息失败:broker 等不到这个操作 , 触发回查(第 6 步)
- 5、6、7回查失败:RocketMQ 最多回查 15 次
原文链接:https://www.tuicool.com/articles/Rvyyeuz
推荐阅读
- 明朝银子的购买力 明代的银子
- 让重装系统更简单:无需使用U盘,3分钟带你体验“云重装”
- 带你重新“玩转”Flutter
- 关于交换机的一些常用术语你是否了解?
- 不知不觉已是容器化时代,这篇文章带你快速入门Docker容器技术
- 两分钟带你看懂手机处理器的参数
- 了解李清照诗人 李清照是一个怎么样的诗人
- 2021年要了解的34种JavaScript优化技术
- 新一代IP网络SRv6了解一下
- 盐酸小檗碱