事务消息原理
源码位置
我们可以通过阅读这个类的代码熟悉事务消息的原理 org.apache.rocketmq.example.transaction.TransactionProducer#main
事务提交过程
主要通过两阶段提交实现
第一阶段:发送Half Message,即半事务消息,消费者无法消费到
第二阶段:开始执行本地事务,如果本地事务成功,则提交commit命令,如果失败则执行rollback命令,如果网络出现问题Broker向Producer询问此Message的事务状态
消息拉取重试原理
消息重试的底层是基于延迟队列实现的,消费失败后,RocketMQ会将其投递到每个ConsumerGroup独有的重试队列中,然后按照10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h的间隔共重试16次