深入理解 RocketMQ - 事务消息
事务,一般情况下,会联想到关系型数据库支持的 ACID。
- Atomicity
原子性,操作是一个不可分割的整体,要么全部执行,要么全部失败。
- Consistency
一致性,事务操作前后,数据保持一致。
- Isolation
隔离性,多个事务同时执行时,互不干扰。
- Durability
持久性,一旦事务被提交,数据的改变就是永久的。
在分布式系统中,事务是指在多个系统或者多个数据库中的多个操作,要么全部成功,要么全部失败,并且需要满足 ACID 四个特性。
事务消息的机制
在 RocketMQ 消息系统中,事务的发送可以总结为
- 生产者发送事务消息和执行本地事务
- Broker 存储事务消息
- Broker 回查事务消息
- Broker 提交挥着回滚事务消息
1. 生产者发送事务消息和执行本地事务
事务消息的发送分为两个阶段
- 发送事务消息
- 发送 endTransaction 消息