处理流程
- 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步;
