Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Apache kafka 使用Java查找卡夫卡主题中的消息数_Apache Kafka_Spring Kafka Test - Fatal编程技术网

Apache kafka 使用Java查找卡夫卡主题中的消息数

Apache kafka 使用Java查找卡夫卡主题中的消息数,apache-kafka,spring-kafka-test,Apache Kafka,Spring Kafka Test,我用它来测试某个基于卡夫卡的消息传递系统。我想在不使用kafka-console-consumer.sh脚本的情况下找出特定主题中的消息数。我似乎找不到一种基于KafkaTestUtils的方法或java中的任何方法来帮助我实现这一点。其他类似问题的答案都没有对我有所帮助。以下应该有用: 属性=。。。 //为了简洁起见省略了 卡夫卡消费者=新卡夫卡消费者财产; 消费电子产品; consumer.pollDuration.ofSeconds10L;//或者某个时候 AtomicLong计数=新的A

我用它来测试某个基于卡夫卡的消息传递系统。我想在不使用kafka-console-consumer.sh脚本的情况下找出特定主题中的消息数。我似乎找不到一种基于KafkaTestUtils的方法或java中的任何方法来帮助我实现这一点。其他类似问题的答案都没有对我有所帮助。

以下应该有用:

属性=。。。 //为了简洁起见省略了 卡夫卡消费者=新卡夫卡消费者财产; 消费电子产品; consumer.pollDuration.ofSeconds10L;//或者某个时候 AtomicLong计数=新的AtomicLong; consumer.endOffsetConsumer.assignment.forEach topicPartition,endOffsetOfPartition->{ count.add和GetEndOffsetof分区; }; //如Mickeel所指出的,保留时的减量 consumer.BeginingOffsetConsumer.assignment.forEach topicPartition,StartOffsetOffPartition->{ count.setcount.get-startOffsetOfPartition; }; System.out.printlncount.get;
获取每个分区的结束偏移量,并将每个分区的结束偏移量添加到计数中,因为主题中的消息数等于该主题所有分区中的消息数。

是否不需要添加config.putcumerconfig.AUTO_offset_RESET_config,earlime?如果使用者在发送者之后启动,它可能看不到主题中的所有消息,并且计数将为wrong@grog我省略了所有的属性。但是,我认为我们不是在消费,而是在得到末端偏移量。这真的很重要吗?我不确定,这就是我问的原因,我做了一个类似的测试,如果我不放那个属性,默认值会使它成为这样,消费者看不到任何消息,测试失败。不过,我也会检查消息的内容,所以在这种情况下可能不需要,只需加倍checking@grog即使未将配置设置为“最早”,它对我也有效,但轮询似乎很重要,因为一旦某些记录由于保留限制而被删除,您将获得的计数将不正确。你需要考虑开始的补偿。