如何从kafka服务器获取主题中的所有消息

时间:2016-08-12 20:59:09

标签: apache-kafka kafka-consumer-api

我想从服务器的主题开始收到所有消息。

前:

  

bin / kafka-console-consumer.sh --zookeeper localhost:2181 - topic testTopic - from-beginning

使用上面的控制台命令时,我希望能够从一开始就获取主题中的所有消息,但我不能使用java代码开始使用主题中的所有消息。

3 个答案:

答案 0 :(得分:4)

最简单的方法是启动消费者并消耗所有消息。现在我不知道您的主题中有多少分区,以及您是否已经拥有现有的消费者群组,但您有以下几种选择:

查看此API:https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html

1)如果您已在同一个使用者组中拥有使用者,但仍希望从头开始使用,则应使用API​​文档中列出的seek选项,并为每个选项设置偏移量为0集团中的消费者。这将从一开始就开始消耗。

2)否则,您可以在新的消费者群体中启动一些消费者。你不必担心寻求。

PS:如果您对Kafka有更多疑问,请记得在将来提供有关您的设置的更多详细信息。很多事情取决于您如何配置您的基础设施和你希望它如何,并因此因情况而异。

答案 1 :(得分:0)

只需更改消费者群组

即可
  

ConsumerConfig.GROUP_ID_CONFIG - 到新的组ID

并设置

  

AUTO_OFFSET_RESET_CONFIG - 最早

示例代码 -

    props.put(ConsumerConfig.GROUP_ID_CONFIG, "newID");
    props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

答案 2 :(得分:0)

您可以使用以下命令获取所有消息:

cd Users/kv/kafka/bin

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topicName --from-beginning --max-messages 100