Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从所有分区获取Kafka延迟_Java_Apache Kafka - Fatal编程技术网

Java 无法从所有分区获取Kafka延迟

Java 无法从所有分区获取Kafka延迟,java,apache-kafka,Java,Apache Kafka,有没有办法找到分配给同一消费群体的所有消费者的整个卡夫卡滞后 我只能得到分配分区的延迟。例如,假设只有一个分区分配给消费者,下面的代码只会给该分区带来延迟。不适用于其他分区 Set<TopicPartition> partitionSet = consumer.assignment(); Map<TopicPartition, Long> endOffsets = consumer.endOffsets(partitionSet); for(TopicPa

有没有办法找到分配给同一消费群体的所有消费者的整个卡夫卡滞后

我只能得到分配分区的延迟。例如,假设只有一个分区分配给消费者,下面的代码只会给该分区带来延迟。不适用于其他分区

Set<TopicPartition> partitionSet = consumer.assignment();
        Map<TopicPartition, Long> endOffsets = consumer.endOffsets(partitionSet);
for(TopicPartition tp : partitionSet) {
            LOG.info("Topic:{}, EndOffset:{}, currentOffset:{}, LAG:{}",
                    tp.topic(), endOffsets.get(tp), consumer.position(tp), endOffsets.get(tp)-consumer.position(tp));
        }
Set partitionSet=consumer.assignment();
Map endoffset=consumer.endoffset(partitionSet);
for(TopicPartition tp:partitionSet){
LOG.info(“主题:{},内偏移:{},当前偏移:{},滞后:{}”,
topic(),endOffsets.get(tp),consumer.position(tp),endOffsets.get(tp)-consumer.position(tp));
}
基本上,我们希望找到所有分区的滞后总和,以了解一个主题的所有消费者(同一组)落后了多少

另外,是否有类似于kafka消费群体的api可用,并将引导服务器和群体作为参数传递以查找滞后


./kafka-consumer-groups.sh--引导服务器--组--描述

以编程方式实现此目的的正确方法是使用AdminClient API:

  • 使用获取组的已提交偏移量

  • 获取日志结束偏移。此时,您需要启动一个使用者并调用在步骤1中检索到的所有分区

    在Kafka 2.5(预计2020年2月底)中,有一个新的AdminClient API来检索日志端偏移量
    listOffsets()
    ,它将允许单独使用AdminClient来检索延迟

  • 对于每个分区,从日志结束偏移量(步骤2)中减去提交的偏移量(步骤1)


  • 这基本上就是卡夫卡消费群体在封面下所做的。因此,如果您愿意,请查看。

    kafka consumer groups只是Scala类的包装。你可以从代码中调用它。或者,你可以设置外部监控,如Burrow或Prometheus,以跟踪所有的群滞后!这就是我要找的。现在,我们能够在完全不需要消费者的情况下获得SETT的消费者。