获取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的再均衡。

相关推荐
Java初学者小白13 分钟前
秋招Day12 - 计算机网络 - 网络安全
java
蔡蓝26 分钟前
设计模式-适配器模式
java·设计模式·适配器模式
寒冰碧海1 小时前
Spring Boot循环依赖全场景解析与终极解决方案
java·spring boot·后端
狮子也疯狂1 小时前
基于Spring Boot的校园社区平台设计与实现
java·spring boot·后端
AllWe$1 小时前
十、MySQL InnoDB引擎底层解析
java·数据库·mysql
嫄码1 小时前
kafka快速入门与知识汇总
java·大数据·分布式·中间件·kafka·linq
The Future is mine1 小时前
SpringDoc集成到Springboot
java·数据库·spring boot
书语时1 小时前
Spring @Autowired解析
java·后端·spring
每次的天空2 小时前
Android第十七次面试总结(Java数据结构)
android·java·面试
寒山李白2 小时前
Java中高并发线程池的相关面试题详解
java·开发语言·面试·高并发·线程池·多线程