1 在LocalTransactionExecuter里返回LocalTransactionState.UNKNOW会发生什么,rocketmq会调checkLocalTransactionState来询问吗?(试了下好像没有)
2 TransactionCheckListener.checkLocalTransactionState何时会执行呢?如何模拟。

解决方案 »

  1.   

    貌似rocketmq已经去掉消息回查了
      

  2.   

    一共有三种事务消息状态:
    执行本地事务成功后返回commit,这时broker会提交消息给消费端订阅;
    若执行失败变为rollback,则自动回滚掉,broker也会删除掉前面发送的prepared消息;
    如果本地事务执行超时或返回了Unknow状态,则broker会进行事务回查。若生产者执行本地事务超过6s则进行第一次事务回查,总共回查15次,后续回查间隔时间是60s,broker在每次回查时会将消息再在Half Topic写一次。回查次数和时间间隔都是可配置的,执行事务回查时,生产者可以获取到事务Id,检查该事务在本地执行情况,返回状态同第一次执行本地事务一样。
      

  3.   

    #设置事务回查间隔默认60秒,此处设置为6秒
    transactionCheckInterval=6000