【问题标题】:Kafka Consumer Properties to read from the maximum offset从最大偏移量读取的 Kafka 消费者属性
【发布时间】:2017-01-20 11:30:51
【问题描述】:

我写了一个 Java Kafka Consumer。我想确定如何明确确保一旦 Kafka Consumer 启动,它只会读取生产者从那时起发送的消息,即它不应该读取生产者已经发送给 Kafka 的任何消息。谁能解释如何确保这一点? :

这是我使用的属性的 sn-p

Properties properties = new Properties();
properties.put("zookeeper.connect", zookeeperHost);
properties.put("group.id", group);
properties.put("auto.offset.reset","largest");
ConsumerConfig consumerConfig = new ConsumerConfig(properties);
consumerConnector = Consumer.createJavaConsumerConnector(consumerConfig);

9 月 14 日更新:

我正在使用以下属性,似乎消费者有时仍然从头开始阅读,有人可以告诉我现在出了什么问题吗?

我正在使用 Kafka 版本 0.8.2

properties.put("auto.offset.reset","largest");
properties.put("auto.commit.enable","false");

【问题讨论】:

  • 你已经做到了。 properties.put("auto.offset.reset","largest");
  • 您还应该关闭自动提交并且永远不要手动提交,因为在这种情况下,您的消费者将在重新启动后忽略auto.reset.offset 配置并取而代之的是提交的偏移量。
  • @serejja 感谢您的意见
  • @ShawnGuo 感谢您的输入,我认为这似乎适用于这两个属性集。
  • @ShawnGuo 请查看我的更新,我无法识别模式,但即使使用这些属性,它似乎也无法始终如一地工作。

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


【解决方案1】:

根据上面的答案,设置消费者属性的正确机制似乎如下:

 properties.put("auto.offset.reset","largest");
 properties.put("auto.commit.enable","false");

这确保从最大偏移量读取

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 2019-01-18
    • 2016-03-11
    • 1970-01-01
    • 2017-05-12
    • 2019-06-10
    • 2021-08-09
    • 2016-02-14
    相关资源
    最近更新 更多