30分钟带你了解「消息中间件」Kafka、RocketMQ( 三 )

解决方案`* 先发送半消息(Half Msg , 类似 Prepare 操作) , 不会投递给消费者

  • 半消息发送成功 , 再执行 DB 操作
  • DB 操作执行成功后 , 提交半消息
发送异常会如何?
  • 1 异常 , 半消息发送失败 , 本地 DB 没有执行 , 整个操作失败 , DB/消息的状态一致(都没有提交)
  • 2 异常/超市生产者以为失败了 , 不执行 DBbroker 存储半消息成功 , 等不到后续操作 , 会询问生产者是提交还是回滚(第6步)
  • 3 DB操作失败:生产者在第 4 步告知 broker 回滚半消息
  • 4 提交/回滚半消息失败:broker 等不到这个操作 , 触发回查(第 6 步)
  • 5、6、7回查失败:RocketMQ 最多回查 15 次
以上就是有关消息中间件的学习知识 , 希望可以对大家学习消息中间件有一定的帮助 , 喜欢的小伙伴可以帮忙转发+关注 , LZ会不定时更新干货 , 感谢大家~
原文链接:https://www.tuicool.com/articles/Rvyyeuz




推荐阅读