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

这边碰到一个Apache RocketMQ问题rocketmq 5.1.1版本开启proxy后,生?

这边碰到一个Apache RocketMQ问题rocketmq 5.1.1版本开启proxy后,生产者发送的消息,在console上看到是都是2条?

展开
收起
真的很搞笑 2023-06-11 23:08:22 234 0
6 条回答
写回答
取消 提交回答
  • 发表文章、提出问题、分享经验、结交志同道合的朋友

    同学你好,大概率原因是开启代理模式后消息重复消费导致的。

    2023-06-12 14:52:27
    赞同 展开评论 打赏
  • 在 Apache RocketMQ 5.1.1 版本中,如果开启了 Proxy 模式,会出现生产者发送的消息,在控制台(console)上显示为两条的情况。

    这是因为在 Proxy 模式下,默认开启了消息过滤机制。当生产者发送消息时,消息会被正常路由到代理服务端。然后代理服务端会将消息进行过滤,并将结果存储到 Name Server 中。最终,控制台会从 Name Server 中获取消息列表并展示出来。

    由于消息过滤机制的存在,导致控制台收到的消息数目是实际发送消息数目的两倍。其中一半是生产者发送的原始消息,另一半是经过代理服务端过滤后的消息。

    如果需要取消消息过滤机制,可以在生产者端设置 Producer.sendWithVIPChannel(false),以使用非 VIP 通道发送消息。同时,还需要在 Name Server 配置文件 namesrv.ini 中添加以下参数:

    # 关闭消息过滤机制
    brokerSuspendForSubnet=default
    

    以上配置可以禁用消息过滤机制并解决控制台消息数目翻倍的问题。但需要注意的是,关闭消息过滤机制可能会增加一些安全风险和网络负载压力,需要根据实际需求进行评估和取舍。

    2023-06-12 13:45:09
    赞同 展开评论 打赏
  • CSDN博客专家,51CTO博主专家,多知名企业认证讲师&签约作者&培训讲师,特邀作者等,华为云专家,资深测试开发专家,金牌面试官,职场面试培训及规划师。

    【回答】

    可能是因为发送消息的线程池大小没有配置或配置不正确导致的。

    可以尝试增加生产者发送消息的线程池大小或者调整相关参数来解决

    2023-06-12 09:29:41
    赞同 展开评论 打赏
  • 热爱开发

    您好,关于RocketMQ的proxy问题,我可以为您提供一些帮助。

    首先,您所描述的情况可能是代理层出现了消息重放。在RocketMQ中,代理层负责将生产者发送的消息转发给消费者,并确保消息按照顺序和一次性传递。如果代理层存在问题,可能会导致消息被重复传递,从而在控制台上看到重复的消息。

    解决这个问题的方法有很多种,以下是一些可能的解决方案:

    升级到最新版本的RocketMQ,最新版本可能已经修复了该问题。 检查代理层配置,确保所有参数都正确设置。 检查网络连接,确保代理层与其他组件之间的通信稳定。 查看控制台日志,寻找可能的错误或异常信息。 尝试使用不同的代理层实现,例如RocketMQ专门的Proxy实现或Apache Kafka。 希望这些信息能对您有所帮助!

    2023-06-12 09:07:34
    赞同 展开评论 打赏
  • 这个问题可能是由于RocketMQ Proxy没有正确配置导致的。RocketMQ Proxy是一个代理服务器,用于在生产者和消费者之间进行消息路由和负载均衡。在使用RocketMQ Proxy时,需要正确配置proxy.conf文件,以确保消息能够正确路由到Broker。

    请检查proxy.conf文件中的以下配置项是否正确配置:

    • namesrvAddr:指定NameServer的地址,确保Proxy能够正确连接到NameServer。
    • listenPort:指定Proxy监听的端口号,确保Proxy能够正确接收生产者发送的消息。
    • brokerClusterName:指定Broker所属的集群名称,确保消息能够正确路由到Broker。
    • brokerAddr:指定Broker的地址,确保消息能够正确路由到Broker。

    如果以上配置项都正确配置,并且仍然出现消息重复的问题,可以考虑升级到最新版本的RocketMQ,或者尝试使用其他的消息中间件。

    2023-06-12 08:36:51
    赞同 1 展开评论 打赏
  • 可以提供一些可能的排查方向和建议:

    1、确认生产者发送消息的方式和参数是否正确,比如确认消息发送的主题和标签是否正确。

    2、确认消息代理(proxy)的配置是否正确,特别是与生产者相关的配置,比如是否开启了代理的producer端口,是否正确配置了生产者访问代理的地址等。

    3、确认消息代理的工作状态是否正常,比如是否有报错日志,是否有异常退出等。

    4、尝试使用RocketMQ的命令行工具进行消息发送,确认是否也出现了消息发送重复的问题,以排除代码层面的问题。

    5、确认消息发送的幂等性,即多次发送同一条消息是否产生了多个消息。

    6、如果以上方法均未能解决问题,可以尝试升级RocketMQ版本或者在官方论坛中提出问题,以获取更多的帮助和支持。

    总之,需要通过详细的排查和分析来确定具体的问题原因,并采取相应的解决措施。

    2023-06-12 07:57:15
    赞同 展开评论 打赏
滑动查看更多

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

相关产品

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

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载

    相关镜像