本文主要介绍消息队列 TDMQ RocketMQ 版中事务消息的概念、技术原理、应用场景和使用方式。
功能介绍
事务消息实现了消息生产者本地事务与消息发送的原子性,保证了消息生产者本地事务处理成功与消息发送成功的最终一致。用户实现类似 X/Open XA 的分布事务功能,通过消息队列 TDMQ RocketMQ 版能达到分布式事务的最终一致。
1. 生产者发送消息到 RocketMQ 中(1)。
2. 服务端收到消息后将消息存储到半消息Topic 中(2)。
3. 当本地事务执行完成(3)。
4. 生产者主动将事务执行结果发送到 RocketMQ 中(4)。
5. 若本地事务执行结果超过一定期限还没反馈,RocketMQ 将执行回查逻辑(5)
6. 生产者收到消息回查后,需要检查对应消息的本地事务执行的最终结果,并反馈(6、7)。事务执行状态有以下三种情况:
TransactionStatus.COMMIT 提交事务,消费者可以消费到该消息。
TransactionStatus.ROLLBACK 回滚事务,消息被丢弃,消费者不会消费到该消息。
TransactionStatus.UN_KNOW 无法判断状态,等待再次发送回查。
7. 当事务执行成功,RocketMQ 将事务消息提交到 real topic,待消费者消费。
应用场景
使用 TDMQ RocketMQ 版的事务消息来处理交易事务,可以大大提升处理效率和性能。计费的交易链路通常比较长,出错或者超时的概率比较高,借助 TDMQ 的自动重推和海量堆积能力来实现事物补偿,支付 Tips 通知和交易流水推送可以通过 TDMQ 来实现最终一致性。
本页内容是否解决了您的问题?