Apache kafka Kafka高级使用者使用JavaAPI从主题中获取所有消息(相当于--从头开始)
我正在使用Kafka站点上的ConsumerGroupExample代码测试Kafka高级消费者。我想检索Kafka服务器配置中关于“test”主题的所有现有消息。查看其他博客,auto.offset.reset应设置为“最小”,以便能够获取所有消息:Apache kafka Kafka高级使用者使用JavaAPI从主题中获取所有消息(相当于--从头开始),apache-kafka,java,consumer,Apache Kafka,Java,Consumer,我正在使用Kafka站点上的ConsumerGroupExample代码测试Kafka高级消费者。我想检索Kafka服务器配置中关于“test”主题的所有现有消息。查看其他博客,auto.offset.reset应设置为“最小”,以便能够获取所有消息: private static ConsumerConfig createConsumerConfig(String a_zookeeper, String a_groupId) { Properties props = new Pr
private static ConsumerConfig createConsumerConfig(String a_zookeeper, String a_groupId) {
Properties props = new Properties();
props.put("zookeeper.connect", a_zookeeper);
props.put("group.id", a_groupId);
props.put("auto.offset.reset", "smallest");
props.put("zookeeper.session.timeout.ms", "10000");
return new ConsumerConfig(props);
}
我真正的问题是:对于高级消费者,什么是等效的Java api调用,它等效于:
bin/kafka-console-consumer.sh--zookeer localhost:2181--主题测试--从一开始看起来您需要使用“低级SimpleConsumer API” 对于大多数应用程序,高级消费Api已经足够好了。 一些应用程序希望功能不向高级消费者公开 但是(例如,重新启动耗电元件时设置初始偏移)。他们可以 而是使用我们的低级SimpleConsumer Api。逻辑会有点复杂 更复杂,您可以按照中的示例进行操作 此示例用于从具有以下参数的主题获取所有消息:(请注意,端口是Kafka端口,而不是ZooKeeper端口,主题设置自): 具体来说,有一种获取readOffset的方法,它接受kafka.api.OffsetRequest.EarliestTime()
下面是另一篇文章,可能会提供一些关于如何解决这个问题的其他想法:基本上,每次新消费者尝试消费某个主题时,它都会从一开始就阅读消息。如果您每次都只是出于测试目的从一开始就消费,那么每次您使用新的groupID初始化您的消费者时,它都会从一开始就读取消息。我是这样做的:
properties.put("group.id", UUID.randomUUID().toString());
每次都要从头开始读信息 要从头开始提取消息,可以执行以下操作:
import kafka.utils.ZkUtils;
ZkUtils.maybeDeletePath("zkhost:zkport", "/consumers/group.id");
那就按照常规工作去做吧
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("auto.offset.reset", "earliest");
props.put("group.id", UUID.randomUUID().toString());
此属性将帮助您。您使用了什么来实现它?阅读主题中的所有信息。谢谢!出于测试目的需要它。我想这是因为您可以为不同的目的重用相同的数据?@user1758777是的,我需要每个不同的测试来处理相同的数据。
import kafka.utils.ZkUtils;
ZkUtils.maybeDeletePath("zkhost:zkport", "/consumers/group.id");
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("auto.offset.reset", "earliest");
props.put("group.id", UUID.randomUUID().toString());