RabbitMQ消息中间件实现分布式事务
分布式事务问题
引入RabbitMQ
使用MQ
优点:通用性强,扩展性强,方案成熟
缺点:基于MQ实现,只适合异步场景;消息处理会有延时,需要业务上能够容忍;
步骤一:可靠消息生产-记录消息发送
步骤二:可靠消息生产-修改消息发送状态
步骤三:可靠消息处理-正常处理
步骤四:可靠消息处理-消息重发
步骤五:可靠消息处理-消息丢弃
分布式事务解决方案:
基于数据库XA/JTA协议的方式:需要数据库厂商支持,JAVA组件有atomikos等
异步校对数据的方式:支付宝、微信支付主动查询支付状态,对账单的形式
基于可靠消息(MQ)的解决方案:异步场景,通用性较强,扩展性高
TCC编程式解决方案:BAT等大厂自己封装的DTX