Python Kafka消费者没有从一开始就收到消息? 您所在的位置:网站首页 python中的options有什么用 Python Kafka消费者没有从一开始就收到消息?

Python Kafka消费者没有从一开始就收到消息?

2023-04-25 15:48| 来源: 网络整理| 查看: 265

TL;DR

你需要在每次想从头开始阅读主题时提供一个新的group.id,同时保持设置auto_offset_reset='最早的'。

KafkaConsumer('quickstart-events', bootstrap_servers=['localhost:9092'], auto_offset_reset='smallest', group_id='newGroup')

如果你的代码在第一次运行时打印输出,但在随后的运行中不再打印,并且在重启Kafka(你的电脑)时问题也得到了解决,那么你就触及了Consumer Group在Kafka中。由于这是一个相当重要的概念,我强烈建议熟悉它。here.

一个应用程序的消费者组确保它不会重复阅读一条消息。每个消费者都有一个消费者组的名字(尽管你可能不会在你的代码中直接看到)。消费者组的偏移位置存储在一个内部的Kafka主题中。

现在重启Kafka后第一次运行代码,Kafka还不知道消费者组,并应用auto_offset_reset配置中提供的策略。在你的例子中,它读取的是最早的可用的提交。当你第二次运行你的代码时,它不需要查看这个策略,因为它已经知道了消费者,它将不允许消费者再次消费该消息。

因此,如果你重新启动Kafka,消费者的这种内部知识也会消失,并且再次应用auto_offset_reset策略。

请记住,这是一个黑客行为,不应该在生产性系统上经常这样做,因为消费者组会被闲置。

As a sid note: You console-consumer creates a new consumer group every single time you run it. The setting "--from-beginning" just ensures that auto_offset_reset is set to '最早的'.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有