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

相关推荐
ytadpole2 小时前
揭秘xxl-job:从高可用到调度一致性
java·后端
玉衡子2 小时前
六、深入理解JVM执行引擎
java·jvm
每天进步一点_JL3 小时前
JVM 内存调优:到底在调什么?怎么调?
java·jvm·后端
yinke小琪3 小时前
说说Java 中 Object 类的常用的几个方法?详细的讲解一下
java·后端·面试
腾讯云中间件5 小时前
TDMQ CKafka 版客户端实战指南系列之二:消费消息最佳实践
kafka·消息队列
腾讯云中间件5 小时前
TDMQ CKafka 版客户端实战指南系列之一:生产最佳实践
kafka·消息队列·腾讯
间彧5 小时前
Spring Boot项目中如何实现Redis分布式锁
java
掘金安东尼5 小时前
AI 应用落地谈起 ,免费试用 Amazon Bedrock 的最佳时机
java·架构
杨杨杨大侠6 小时前
案例03-附件E-部署运维
java·docker·github
杨杨杨大侠6 小时前
案例03-附件B-映射器实现
java·开源·github