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

RocketMQ每次新创建一个topic和消费者发消息都要发两遍才能收到为什么?

RocketMQ每次新创建一个topic和消费者发消息都要发两遍才能收到为什么?就是我每次新创建一个topic和消费者发消息时,第一条消息返回结果send_ok,dashboard上显示这条消息的状态是consumed,但是消费者端并没有消费这条消息。重新发第二条消息就正常了

展开
收起
你鞋带开了~ 2024-03-13 15:06:17 141 0
2 条回答
写回答
取消 提交回答
  • 你开启一下消息追踪在new producer和consumer的时候传个true。然后从dashboard上看下消息轨迹。看下具体是谁消费的
    --此回答整理自钉群“群1-Apache RocketMQ 中国开发者钉钉群”

    2024-03-13 22:51:22
    赞同 展开评论 打赏
  • 出现RocketMQ中新建Topic后第一条消息无法被正常消费,但第二条消息却正常的情况,可能涉及多个层面的原因。以下是一些建议的排查步骤和可能的原因:

    1. 消费者启动时间

      • 确保消费者在发送第一条消息之前已经启动并订阅了对应的Topic。如果消费者启动晚于第一条消息的发送,那么它可能会错过这条消息。
    2. 消息偏移量

      • 检查消费者的偏移量设置是否正确。如果消费者的偏移量设置错误,可能会导致它跳过第一条消息。
      • 可以考虑重置消费者的偏移量到最开始的位置。
    3. 消息存储与同步

      • 检查Broker的日志,看是否有关于消息存储或同步的错误。
      • 确保Broker的配置正确,且没有因为资源不足(如磁盘空间不足、内存不足等)导致消息处理异常。
    4. 消息重试机制

      • RocketMQ有消息重试机制。如果消费者在处理消息时抛出异常,RocketMQ会尝试重新发送消息。确保你的消费者逻辑能够正确处理消息,避免无意义的重试。
    5. 网络问题

      • 检查发送者和消费者之间的网络连接是否稳定。网络延迟或丢包可能导致消息发送或接收异常。
    6. 版本兼容性

      • 确保你使用的RocketMQ客户端和服务器版本兼容。有时候版本不兼容会导致一些难以预料的问题。
    7. 日志分析

      • 仔细分析RocketMQ的日志,特别是Broker和消费者的日志,看是否有关于消息处理或消费的异常信息。
    8. 代码逻辑

      • 回顾并检查发送消息和消费消息的代码逻辑,确保没有逻辑错误或遗漏。
    9. 集群状态

      • 如果使用的是RocketMQ集群,检查集群的状态,确保所有Broker节点都处于健康状态。
    10. 消费进度确认

      • 确保消费者在处理完消息后正确提交了消费进度。如果消费者没有正确提交进度,RocketMQ可能会认为消息没有被消费,从而再次发送。
    2024-03-13 16:03:52
    赞同 展开评论 打赏

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

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

    更多
    基于 RocketMQ+ Knative 驱动云原生 Ser 立即下载
    基于 RocketMQ + Knative 驱动云原生 Serverless 应用 立即下载
    RocketMQ Operator-K8s平台自动化部署工具 立即下载