首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【JavaP6大纲】分布式事务篇:MQ 事务消息

【JavaP6大纲】分布式事务篇:MQ 事务消息

作者头像
Java廖志伟
发布于 2021-04-08 15:12:04
发布于 2021-04-08 15:12:04
8590
举报
文章被收录于专栏:高级开发进阶高级开发进阶

MQ 事务消息?

MQ 事务消息 有一些第三方的MQ是支持事务消息的,比如RocketMQ,他们支持事务消息的方式也是类似于采用的二阶段提交,但是市面上一些主流的MQ都是不支持事务消息的,比如 RabbitMQ 和 Kafka 都不支持。 第一阶段Prepared消息,会拿到消息的地址。第二阶段执行本地事务,第三阶段通过第一阶段拿到的地址去访问消息,并修改状态。也就是说在业务方法内要想消息队列提交两次请求,一次发送消息和一次确认消息。如果确认消息发送失败了RocketMQ会定期扫描消息集群中的事务消息,这时候发现了Prepared消息,它会向消息发送者确认,所以生产方需要实现一个check接口,RocketMQ会根据发送端设置的策略来决定是回滚还是继续发送确认消息。这样就保证了消息发送与本地事务同时成功或同时失败。

优点: 实现了最终一致性,不需要依赖本地数据库事务。 缺点: 实现难度大,主流MQ不支持,RocketMQ事务消息部分代码也未开源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • MQ 事务消息?
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档