Apache kafka 卡夫卡:一个主题中的消息数
我需要存储卡夫卡主题中的消息数。 这与是否有消费者消费了这些消息无关Apache kafka 卡夫卡:一个主题中的消息数,apache-kafka,Apache Kafka,我需要存储卡夫卡主题中的消息数。 这与是否有消费者消费了这些消息无关 kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test-topic 上面给出了主题的偏移量 上述信息是否等于当前存储在卡夫卡主题中的信息数量?不完全相同。您得到的数字仅指所有主题分区的当前最大偏移量。消息计数还取决于该主题的分区开始偏移量 你可以跑
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test-topic
上面给出了主题的偏移量
上述信息是否等于当前存储在卡夫卡主题中的信息数量?不完全相同。您得到的数字仅指所有主题分区的当前最大偏移量。消息计数还取决于该主题的分区开始偏移量 你可以跑 kafka-run-class.sh kafka.tools.GetOffsetShell-代理列表localhost:9092,localhost:9093,localhost:9094-主题测试主题-时间-1 及 kafka-run-class.sh kafka.tools.GetOffsetShell-代理列表localhost:9092,localhost:9093,localhost:9094-主题测试主题-时间-2
分别计算每个分区的消息计数,方法是从EndOffset中减去BeginingOffset,然后将它们相加,得到该主题的总记录计数。是,如果最早偏移量等于零,这等于消息数。如果最早偏移量不等于零,您需要计算每个分区的差值,然后求和。上面给出了主题的偏移量? 是,它给出了当前最大偏移量 上述信息是否等于当前存储在卡夫卡主题中的信息数量? 不,这不是卡夫卡中的邮件数量,因为在保留期之后,邮件将从主题中删除,所以偏移量!=邮件计数 获取卡夫卡中的消息数
brokers="<broker1:port>"
topic=<topic-name>
sum_1=$(/usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $brokers --topic $topic --time -1 | grep -e ':[[:digit:]]*:' | awk -F ":" '{sum += $3} END {print sum}')
sum_2=$(/usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $brokers --topic $topic --time -2 | grep -e ':[[:digit:]]*:' | awk -F ":" '{sum += $3} END {print sum}')
echo "Number of records in topic ${topic}: "$((sum_1 - sum_2))
其中选项-time-1=>当前最大偏移量和-time-2是当前最小偏移量这对压缩主题不适用这对压缩主题不适用