weixin_47921890 2024-09-07 01:38 采纳率: 0%
浏览 7
已结题

librdkafka consumer poll拉取数据第一次很慢

跑的librdkafka-2.1.0自带的consumer.c程序
编译的windows平台下win32控制台程序。
发现rkm = rd_kafka_consumer_poll(rk, 100);

函数返回结果一直是0,必须要经过多次循环执行以后才会有非0返回。
即,一旦poll到第一次数据,以后producer.c再生产的消息才可以立马收到了。
请问是什么原因

img

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-07 01:39
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的问题似乎是在使用librdkafka的consumer程序时,首次调用rd_kafka_consumer_poll()函数时,需要等待一段时间才能获取到数据。这种情况可能有以下几个原因:

    1. Kafka消费者初始化与组平衡(Group Rebalance): 当消费者订阅主题时,可能会触发组平衡过程。在组平衡过程中,Kafka会决定哪些消费者应该消费哪些分区。这个过程可能需要一些时间,特别是在消费者组刚启动时或者有所变化时。因此,在组平衡完成之前,消费者可能无法立即从broker拉取消息。
    2. 网络延迟或Broker响应延迟: 在某些情况下,网络延迟或Kafka broker的响应延迟可能导致消费者首次拉取数据时花费更多时间。
    3. 消费者配置: 你的消费者配置可能会影响拉取数据的速度。例如,auto.offset.reset配置决定了当没有初始偏移量时消费者的行为,这可能会影响首次拉取数据的时间。此外,其他配置如fetch.message.max.bytes也可能影响拉取数据的大小和速度。
    4. 消息生成速率: 如果你的生产者没有在生产数据,或者生产数据的速率很慢,那么消费者可能会需要等待更长的时间才能拉取到数据。

    解决这个问题的建议如下:

    • 确保你的消费者配置是正确的,特别是与组管理和偏移量管理相关的配置。
    • 检查Kafka broker的日志以确定是否有任何错误或警告。
    • 如果可能的话,增加消费者的超时时间(在调用rd_kafka_consumer_poll()时),以允许更多的时间来处理和响应消息。
    • 检查网络状况和延迟,确保网络连接是稳定的。
    • 确保生产者正在生产数据,并且数据的生成速率足够快,以便消费者可以拉取到数据。

    此外,代码中的拼写错误(如consumer_po110应为rd_kafka_consumer_poll)可能会导致程序无法正常运行或产生意外的行为。请确保代码中的拼写和语法是正确的。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月9日
  • 修改了问题 9月7日
  • 创建了问题 9月7日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见