java获取kafka偏移量_kafka查询指定时间数据的偏移量

本文介绍了如何使用Java从Kafka中查询指定时间的数据偏移量。通过创建KafkaOffsetSearch对象,查找主题的领导者,然后使用SimpleConsumer获取每个分区的最后偏移量。详细步骤包括建立消费者,发送OffsetRequest并处理响应,最终返回包含所有分区偏移量的Map。
摘要由CSDN通过智能技术生成

KafkaOffsetSearch kot= newKafkaOffsetSearch();

TreeMap metadatas =kot.findLeader(seeds, port, topic);

Map map = new HashMap();

List offSetList = new ArrayList<>();for (Entryentry : metadatas.entrySet()) {int partition =entry.getKey();

String leadBroker=entry.getValue().leader().host();

String clientName= "Client_" + topic + "_" +partition;

SimpleConsumer consumer= new SimpleConsumer(leadBroker, port, 100000,64 * 1024, clientName);long readOffset =getLastOffset(consumer, topic, partition,

timestamp, clientName);

offSetList.add(readOffset);

map.put(partition+"", readOffset+"");

System.out.println(partition+":"+readOffset);if(consumer!=null)consumer.close();

}returnmap;

}public static longgetLastOffset(SimpleConsumer consumer, String to

获取Kafka偏移量,可以使用Kafka Consumer API提供的方法。以下是获取Kafka偏移量的示例代码: ```java import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.common.TopicPartition; import java.util.Arrays; import java.util.Properties; public class KafkaOffsetExample { private static final String TOPIC_NAME = "my-topic"; private static final String BOOTSTRAP_SERVERS = "localhost:9092"; private static final String GROUP_ID = "my-group"; public static void main(String[] args) { Properties props = new Properties(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVERS); props.put(ConsumerConfig.GROUP_ID_CONFIG, GROUP_ID); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer"); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer"); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); // 订阅主题 consumer.subscribe(Arrays.asList(TOPIC_NAME)); // 获取分区 TopicPartition partition = new TopicPartition(TOPIC_NAME, 0); // 获取偏移量 long offset = consumer.position(partition); System.out.println("Offset: " + offset); // 关闭消费者 consumer.close(); } } ``` 在这个例子中,我们使用KafkaConsumer类获取Kafka偏移量。首先,我们创建KafkaConsumer实例并订阅主题。然后,我们获取分区并使用position()方法获取当前偏移量。最后,我们打印偏移量并关闭消费者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值