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

RocketMQ出现了一个问题?

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降级到以前的旧版本,则不存在这样的问题。

展开
收起
真的很搞笑 2023-10-16 21:30:59 96 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    根据您的描述,升级到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对事务消息处理的改变导致的。建议您尝试以下解决方案:

    1. 检查RocketMQ和Spring Cloud Stream的版本兼容性:确保您使用的RocketMQ版本与Spring Cloud Stream版本兼容。可以查阅官方文档或Spring Cloud Stream的GitHub页面了解版本兼容性信息。

    2. 升级Spring Cloud Stream版本:尝试升级您使用的Spring Cloud Stream版本,以查看是否有已知的问题修复。可以参考Spring Cloud Stream的官方文档或GitHub页面了解最新版本。

    3. 查看RocketMQ的发布说明:仔细阅读RocketMQ的发布说明和变更日志,查看是否有关于事务消息或者相关配置的改变。可能会提供一些线索或解决方案。

    2023-10-25 08:21:34
    赞同 展开评论 打赏
  • 这个问题可能是由于RocketMQ在2022.0.0.0版本中对事务消息的处理逻辑发生了变化,导致了消费者端的分区功能失效。具体的原因和解决方案如下:

    • 原因:RocketMQ在2022.0.0.0版本中,对于事务消息,会在发送时为每条消息生成一个唯一的事务ID,并将其作为消息的key。这样做的目的是为了保证事务消息的幂等性和顺序性。但是,这也导致了消费者端的分区功能失效,因为分区功能是根据消息的key来进行负载均衡的。如果每条消息的key都不同,那么分区功能就无法正确地将消息分配给不同的消费者。
    • 解决方案:有两种可能的解决方案:
      • 一种是修改RocketMQ的源码,让事务消息在发送时不生成事务ID,而是使用用户自定义的key或者默认的key。这样就可以恢复消费者端的分区功能,但是也会牺牲事务消息的幂等性和顺序性。
      • 另一种是修改消费者端的配置,让消费者端不使用分区功能,而是使用负载均衡组或者广播模式来接收消息。这样就可以保证事务消息的幂等性和顺序性,但是也会增加消费者端的复杂度和开销。
    2023-10-17 09:29:35
    赞同 1 展开评论 打赏

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

热门讨论

热门文章

相关电子书

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