正常流程是
(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
能不能先执行商品存储,然后就能得到商品的完整信息(包括商品ID),再把该消息发送到MQ,然后ES进行消费建立索引。相当于这个场景就不太适用发送事务消息,是不是发送一般的消息就行了
原回答者GitHub用户mgljava
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。