RocketMQ在将spring-cloud-starter-stream-rocketmq升级到2022.0.0.0之后,出现了一个问题:
producer端启动事务消息(spring.cloud.stream.rocketmq.bindings.demon2Channel-out-0.producer.producterType=Trans)后,consumer端的spring.cloud.stream.bindings.demon2Cannel-in-0.consumer.partition=true配置将不生效,这时consumer端接收到的消息的header也是包含scst_Partition的,并且值正确。如果事务消息被取消(producer.productType=Normal),那么consumer.partitiond=true将生效。如果将spring-cloud-starter-stream-rocketmq降级到以前的旧版本,则不存在这样的问题。
根据您的描述,升级到RocketMQ 2022.0.0.0版本后,遇到了一个问题:当在producer端启动事务消息(spring.cloud.stream.rocketmq.bindings.demon2Channel-out-0.producer.producterType=Trans
)时,consumer端的spring.cloud.stream.bindings.demon2Cannel-in-0.consumer.partition=true
配置不生效。而如果事务消息被取消(producer.productType=Normal
),则consumer.partition=true
会生效。同时,如果将spring-cloud-starter-stream-rocketmq
降级到旧版本,则不存在这个问题。
这个问题可能是由于新版本的RocketMQ对事务消息处理的改变导致的。建议您尝试以下解决方案:
检查RocketMQ和Spring Cloud Stream的版本兼容性:确保您使用的RocketMQ版本与Spring Cloud Stream版本兼容。可以查阅官方文档或Spring Cloud Stream的GitHub页面了解版本兼容性信息。
升级Spring Cloud Stream版本:尝试升级您使用的Spring Cloud Stream版本,以查看是否有已知的问题修复。可以参考Spring Cloud Stream的官方文档或GitHub页面了解最新版本。
查看RocketMQ的发布说明:仔细阅读RocketMQ的发布说明和变更日志,查看是否有关于事务消息或者相关配置的改变。可能会提供一些线索或解决方案。
这个问题可能是由于RocketMQ在2022.0.0.0版本中对事务消息的处理逻辑发生了变化,导致了消费者端的分区功能失效。具体的原因和解决方案如下:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/