1 个回答
通过可靠消息服务保证消息的可靠传输,并在消息消费者那里进行本地事务处理,从而实现最终一致性,所以又被称作消息事务。如果消息处理失败,可以重试或者进行人工干预。执行流程:
这种方案也是实现了「最终一致性」,和本地消息表类似,但是对比本地消息表实现方案,消息事务不需要再建消息表,而是将消息中间件的机制去做的,「不再依赖本地数据库事务」了。
所以这种方案更适用于高并发的场景,目前市面上实现该方案的「只有阿里的 RocketMQ」。
1、发送 prepare 消息到消息中间件
2、发送成功后,执行本地事务
如果事务执行成功,则 commit,消息中间件将消息下发至消费端
如果事务执行失败,则回滚,消息中间件将这条 prepare 消息删除
3、消费端接收到消息进行消费,如果消费失败,则不断重试
这种方案也是实现了「最终一致性」,和本地消息表类似,但是对比本地消息表实现方案,消息事务不需要再建消息表,而是将消息中间件的机制去做的,「不再依赖本地数据库事务」了。
所以这种方案更适用于高并发的场景,目前市面上实现该方案的「只有阿里的 RocketMQ」。
发布于:10个月前 (01-29) IP属地:未知
我来回答
您需要 登录 后回答此问题!