# 基于RabbitMQ的可复用的事务消息方案
>什么是事务性消息
可以认为是一个确保分布式系统中的最终一致性的两阶段提交(two-phase commit )的消息实现。
事务性消息确保本地事务的执行和消息的发送是一个原子性操作。
>先扔一张图片欣赏下
我们要达到可复用的事务性消息至少要满足以下特点:
1、消息发送确认机制
2、消息接受确认机制
3、消息重投
4、消费幂等性
5、RabbitMQ 持久化 等等
事务消息原则上只适合弱一致性(或者说最终一致性)的场景,针对强一致性要求的业务逻辑则不适用。因为弱一致性就意味着
不保证在任意时刻任意节点上的同一份数据都是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。