如果对自己的系统落地最终一致性事务,如何落地实现?
- 首先熟悉自己负责的业务, 熟悉系统间交互流程, 哪些可以异步, 哪些是必须同步
-
如何落地最终一致性事务
根据课程思考最终一致性事务修改:
在收到交易请求, 成功时可以 commit half message
- 同时 需要实现 check方法, 供RocketMQ回调, 检查本地事务状态
- 在交易成功或失败时再进行commit或rollback
- rollback消息 RocketMQ会定期删除
- 通知系统收到消息存储到本地并通知商户
问题
但是考虑到在这边系统完全没有必要增加事务, 因为发送消息到MQ是在交易结束后, 直接用一个字段判断状态, 然后用定时保证投递到MQ即可.
可以改成RocketMQ的两段提交 half message
执行流程
根据流程结果: commit/rockback
在这边的使用场景中, 因为提交了 half message 也不会发送消息, 等到流程执行结束了, 然后使用send发送普通消息即可.执行流程
RocketMQ send(普通消息)