我写了一篇Java Kafka Consumer。我想确保如何明确确保一旦Kafka Consumer启动它只读取生产者从那时起发送的消息,即它不应该读取生产者已经发送给Kafka的任何消息。任何人都可以解释如何确保这一点? :
以下是我使用的属性的片段
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");
答案 0 :(得分:2)
根据上面的答案,似乎正确的机制如下设置消费者的属性:
properties.put("auto.offset.reset","largest");
properties.put("auto.commit.enable","false");
这确保从最大偏移量
读取