【问题标题】:Python Kafka consumer not reading messages as they arrivePython Kafka消费者在消息到达时未阅读消息
【发布时间】:2020-04-13 05:15:34
【问题描述】:

我刚刚开始使用 Kafka,kafka-python。在下面的代码中,我试图在消息到达时读取它们。但由于某种原因,消费者似乎要等到一定数量的消息累积后才获取它们。

我最初以为是因为制作人批量发布。当我运行“kafka-console-consumer --bootstrap-servers --topic”时,我可以看到每条消息一经发布就收到(如在消费者控制台上看到的那样)

但是 python 脚本无法以相同的方式接收消息。

def run():
    success_consumer = KafkaConsumer('success_logs',
                                     bootstrap_servers=KAFKA_BROKER_URL,
                                     group_id=None,
                                     fetch_min_bytes=1,
                                     fetch_max_bytes=10,
                                     enable_auto_commit=True)
    #dummy poll
    success_consumer.poll()
    for msg in success_consumer:
        print(msg)

    success_consumer.close()

有人能指出 KafkaConsumer 改变了什么配置吗?为什么无法读取“kafka-console-consumer”之类的消息?

【问题讨论】:

  • 将组 ID 作为字符串提供时会发生什么?

标签: python apache-kafka kafka-consumer-api


【解决方案1】:

KafkaConsumer 类也有一个fetch_max_wait_msparameter。您应该将其设置为 0

success_consumer = KafkaConsumer(...,fetch_max_wait_ms=0)

【讨论】:

  • 添加这个没有帮助。消费者仍在等待累积一定数量的消息。此外,我已经指定了一个非常低的 fetch_max_bytes=10。考虑到消息肯定长于 10 个字节,它应该覆盖 fetch_max_wait_ms。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多