获取kafka最新offset-java

之前笔者曾经写过通过scala的方式获取kafka最新的offset

但是大多数的情况我们需要使用java的方式进行获取最新offset

以下是通过java代码获取kafka最新offset

GetOffsetShellWrap

public class GetOffsetShellWrap { private static Logger log = LoggerFactory.getLogger(GetOffsetShellWrap.class); private String topic; private int port; private String host; private int time; public GetOffsetShellWrap(String topic,int port,String host,int time) { this.topic = topic; this.port = port; this.host = host; this.time = time; } public Map<String, String> getEveryPartitionMaxOffset() { //1.获取topic所有分区 以及每个分区的元数据 => 返回 Map<分区id,分区元数据> TreeMap<Integer, PartitionMetadata> partitionIdAndMeta = findTopicEveryPartition(); Map<String, String> map = new HashMap<String, String>(); for (Entry<Integer, PartitionMetadata> entry : partitionIdAndMeta.entrySet()) { int leaderPartitionId = entry.getKey(); //2.根据每个分区的元数据信息 ==> 获取leader分区的主机 S
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
获取Kafka的topic的offset,可以使用KafkaConsumer类中的方法。以下是Java代码示例: ```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.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class KafkaOffsetGetter { public static void main(String[] args) { // Kafka consumer configuration Properties props = new Properties(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); props.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group"); props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); // Create Kafka consumer KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); // Assign topic partitions List<TopicPartition> partitions = new ArrayList<>(); TopicPartition partition0 = new TopicPartition("my-topic", 0); TopicPartition partition1 = new TopicPartition("my-topic", 1); partitions.add(partition0); partitions.add(partition1); consumer.assign(partitions); // Seek to beginning of topic consumer.seekToBeginning(partitions); // Print offset for each partition while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); for (ConsumerRecord<String, String> record : records) { System.out.println("Partition: " + record.partition() + ", Offset: " + record.offset() + ", Value: " + record.value()); } } } } ``` 在上面的代码中,我们创建了一个KafkaConsumer实例,并使用assign()方法指定要消费的topic和分区,然后使用seekToBeginning()方法将消费者定位到该topic的开头。接着,我们使用poll()方法从Kafka获取一批记录,并遍历这些记录以获取每个分区的当前offset

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值