获取kafka中topic偏移量和消费偏移量

1、kafkaclient版本1.0.1

java 复制代码
public class MutiThreadScheduleTask {

@Resource
private KafkaConsumer<String, String> kafkaConsumer;

public void test(String topic) {
        
            //查询 topic partitions
            List<TopicPartition> topicPartitionList = new ArrayList<>();

            List<PartitionInfo> partitionInfoList = kafkaConsumer.partitionsFor(topic);
            for (PartitionInfo partitionInfo : partitionInfoList) {
                TopicPartition topicPartition = new TopicPartition(partitionInfo.topic(), partitionInfo.partition());
                topicPartitionList.add(topicPartition);
            }

            //查询总偏移量
            Map<Integer, Long> endOffsetMap = new HashMap<>();
            Map<TopicPartition, Long> endOffsets = kafkaConsumer.endOffsets(topicPartitionList);
            for (TopicPartition partitionInfo : endOffsets.keySet()) {
                endOffsetMap.put(partitionInfo.partition(), endOffsets.get(partitionInfo));
            }

            //查询消费消费偏移量
            Map<Integer, Long> commitOffsetMap = new HashMap<>();
            for (TopicPartition topicAndPartition : topicPartitionList) {
                OffsetAndMetadata committed = kafkaConsumer.committed(topicAndPartition);
                commitOffsetMap.put(topicAndPartition.partition(), committed.offset());
            }
            
    }
}

2、这部分测试代码和真正的消费端不在一个程序内,连接kafka时随便配置了一个groupId,然后kafkaConsumer.committed(topicAndPartition)一直为null。后来groupId改成和消费者一致时能成功查到。

注意:千万不要在另外一个服务以上面这种方式查询,要不然会创建一个消费者,触发Kafka的再均衡。

相关推荐
逑之19 分钟前
C语言笔记5:函数
java·c语言·笔记
JavaLearnerZGQ24 分钟前
1、Java中的线程
java·开发语言·python
小当家.10536 分钟前
深入理解JVM:架构、原理与调优实战
java·jvm·架构
刀法如飞44 分钟前
一款开箱即用的Spring Boot 4 DDD工程脚手架
java·后端·架构
一嘴一个橘子1 小时前
spring-aop 的 基础使用 -3 - 切点表达式 的提取、复用
java
Re_zero1 小时前
Java新手避坑:为什么我劝你放弃 scanner.nextInt()?
java
Good_Starry1 小时前
Java——反射
java
又是忙碌的一天2 小时前
SpringBoot 创建及登录、拦截器
java·spring boot·后端
fox_mt2 小时前
AI Coding - ClaudeCode使用指南
java·ai编程
毕设源码-郭学长2 小时前
【开题答辩全过程】以 基于SSM的高校运动会管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse