- 事务消息: 消息队列提供分布式事务的功能, 通过消息队列事务消息, 达到分布式事务的最终一致性.
- 半事务消息: 暂不能投递到消费方的消息. 发送方已经成功地将消息发送到了消息队列的服务端, 但服务方没有收到生产者对该消息的二次确认, 此时该消息被标记成暂不能投递的状态, 处于这种状态下的消息, 即属于半事务消息.
- 消息回查: 由于网络闪退, 生产者应用重启等原因, 导致某条事务消息的二次确认丢失, 消息队列服务端通过扫描发现该消息一直处于"半事务消息"状态, 需要主动向消息生产者询问该消息的最终状态 (提交或回滚) , 该询问的过程即消息的会查.
事务消息的步骤
- 发送半消息 (half 消息)
- 半消息发送成功
- 执行本地事务
- 提交/回滚事务
- 未收到4的提交/回滚消息时, 回查事务状态
- 检查本地事务状态
- 根据事务状态提交或回滚事务.
流量包和扣减库存, 保存一个 task 任务, 记录扣减的流量包 (扣减流量包和保存task 在同一个事务中)