开发者社区 > 云原生 > 云消息队列 > 正文

消息队列 RocketMQ应用场景之分布式事务一致性是如何实现的?

消息队列 RocketMQ应用场景之分布式事务一致性是如何实现的?

展开
收起
Lee_tianbai 2021-01-01 14:08:54 1258 0
1 条回答
写回答
取消 提交回答
  • 注册系统注册的流程中,用户入口在网页注册系统,通知系统在邮件系统,两个 系统之间的数据需要保持最终一致。 普通消息处理 如上所述,注册系统和邮件通知系统之间通过消息队列进行异步处理。注册系统 将注册信息写入注册系统之后,发送一条注册成功的消息到消息队列 RocketMQ 版, 邮件通知系统订阅消息队列 RocketMQ 版的注册消息,做相应的业务处理,发送注 册成功或者失败的邮件。 image.png 流程说明如下: 1. 注册系统发起注册。 2. 注册系统向消息队列 RocketMQ 版发送注册消息成功与否的消息。 2.1 消息发送成功,进入 3。 2.2 消息发送失败,导致邮件通知系统未收到消息队列 RocketMQ 版发送 的注册成功与否的消息,而无法发送邮件,最终邮件通知系统和注册 系统之间的状态数据不一致。 3. 邮件通知系统收到消息队列 RocketMQ 版的注册成功消息。 4. 邮件通知系统发送注册成功邮件给用户。 在这样的情况下,虽然实现了系统间的解藕,上游系统不需要关心下游系统的业 务处理结果;但是数据一致性不好处理,如何保证邮件通知系统状态与注册系统状态 的最终一致。 image.png 流程说明如下: 1. 注册系统向消息队列 RocketMQ 版发送半事务消息。 1.1 半事务消息发送成功,进入 2。 1.2 半事务消息发送失败,注册系统不进行注册,流程结束。(最终注册系 统与邮件通知系统数据一致) 2. 注册系统开始注册。 2.1 注册成功,进入 3.1。 2.2 注册失败,进行 3.2。 3. 注册系统向消息队列 RocketMQ 版发送半消息状态。 3.1 提交半事务消息,产生注册成功消息,进入 4。 3.2 回滚半事务消息,未产生注册成功消息,流程结束。(最终注册系统与 邮件通知系统数据一致) 4. 邮件通知系统接收消息队列 RocketMQ 版的注册成功消息。 5. 邮件通知系统发送注册成功邮件。(最终注册系统与邮件通知系统数据一致)

    2021-01-01 14:09:53
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    基于社区的分布式 风险感知模型 立即下载
    如何利用Redisson分布式化传统Web项目 立即下载
    FLASH:大规模分布式图计算引擎及应用 立即下载