处理流程
- producer 发送
half message
到broker中; - broker接收到
half message
后给producer发送成功的发聩,这时,half message
才算真正生成完了; - producer执行本地事务;
- producer根据第3步得到执行本地事务的结果,向MQ进行二次确认(到底是
commit
还是roll back
)。如果是commit
就将这个half message
变为消费者可以消费的消息
,此时消费者接收到这条half message
。如果是roll back
,那么MQ就将这条half message
丢弃掉; - 如果
MQ
在第4步的时候,拿不到producer执行完本地事务的结果,那么告知producer要进行回查; - producer 查询执行本地事务结果;
- producer根据第6步返回的结果再次执行第4步;