开发者社区 > 云原生 > 正文

rockmq的事务消息

正常流程是

(1) 发送消息(half消息)。

(2) 服务端响应消息写入结果。

(3) 根据发送结果执行本地事务(如果写入失败,此时half消息对业务不可见,本地逻辑不执行)。

(4) 根据本地事务状态执行Commit或者Rollback(Commit操作生成消息索引,消息对消费者可见)

我现在的场景是 在第四部 本地事务提交 但是 hafl消息我想改 因为我的哦hafl消息是依赖本地消息的 只有本地消息处理完成了才能得到完整的hafl消息。

新增商品后通知es服务 进行商品索引 按照rocketmq的流程

1、发送消息给mq 2、mq回调 商品服务器执行本地事务(新增商品和商品的一些关联信息) 3.mq 发送half消息给 es服务进行索引

问题在: 第一步发送给mq的时候商品的部分数据是拿不到的比如 商品的id 导致发送给mq的half消息里面的商品信息是不完整的商品信息

新增商品后通知es服务 进行商品索引 按照rocketmq的流程

发送消息给mq mq回调 商品服务器执行本地事务(新增商品和商品的一些关联信息) 3.mq 发送half消息给 es服务进行索引 问题在: 第一步发送给mq的时候商品的部分数据是拿不到的比如 商品的id 导致发送给mq的half消息里面的商品信息是不完整的商品信息

原提问者GitHub用户djkdeveloper

展开
收起
芬奇福贵 2023-05-26 11:18:26 120 0
1 条回答
写回答
取消 提交回答
  • 能不能先执行商品存储,然后就能得到商品的完整信息(包括商品ID),再把该消息发送到MQ,然后ES进行消费建立索引。相当于这个场景就不太适用发送事务消息,是不是发送一般的消息就行了

    原回答者GitHub用户mgljava

    2023-05-26 17:29:16
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载