美文网首页
RocketMQ-001、事务性消息

RocketMQ-001、事务性消息

作者: Docker_Compose | 来源:发表于2021-06-26 22:57 被阅读0次

    1、谈谈分布式事务问题

      在单机环境下,事务是由JVM和数据库来保证的。但在分布式环境中,由于存在多个JVM,而锁只作用于自身存在的JVM,因此,分布式系统就会存在事务问题。

      举个例子,在A服务执行事务的过程中,调用了B服务。然而,调完了B服务,后面的操作出现问题而抛异常了,于是,A服务由本地事务进行RollBack。因为A服务的本地事务无法作用于B服务,因此B服务正常执行的情况下,是无法进行RollBack,所以就会造成事务问题。



    2、粗谈RocketMQ的事务性消息

    (1)事务性消息的流程
    1. Producer开启事务
    2. Producer向RocketMQ中的broker发送Half Message,broker将它写入Half队列中,并保存到磁盘来实现持久化。
    3. broker向Producer发送确认消息。由于Producer可能会出现问题,这些问题可能是网络问题,也可能是Producer本地事务执行过长,或者其他因数。为了避免这一种情况发生,RockertMQ会定时的检查Producer的状态。
    4. Producer执行完本地事务后,就会向broker发送确认消息。如果Producer发生异常了,那么它就会进行RollBack,同时也会通知broker进行RollBack。

    (2)谈谈broker持久化到磁盘的Half Message

      Hlaf Message虽然被持久化到磁盘了,但是RocketMQ默认只保存三天。

    相关文章

      网友评论

          本文标题:RocketMQ-001、事务性消息

          本文链接:https://www.haomeiwen.com/subject/tcgmyltx.html