consumer.poll无法从具有3个分区的Kafka主题中获取记录

时间:2016-06-22 05:38:04

标签: apache-kafka producer-consumer kafka-consumer-api

注意:使用的Kafka版本:kafka_2.11-0.9.0.1

我有一个名为test-kafka的主题,3 partitions1 replication factor,此主题在每个分区中都有一些字符串数据,即key and value pair

当我尝试通过消费者api获取记录时,consumer.poll函数无法获取任何记录并提供records.count =0但是当我使用相同的逻辑而只有single parition时然后它运作良好并取得记录。

我认为Kafka会在内部处理多个分区,并会从每个分区逐个获取记录,我只需要subscribetopic

任何人都可以在这里帮忙吗?

参考代码段:

KafkaConsumer<String,String> consumer = new KafkaConsumer<String,String>(props);
        consumer.subscribe(Arrays.asList(topic));

        while(true)
        {
            ConsumerRecords<String, String> records = consumer.poll(100);

            System.out.println(records.count());

            for(ConsumerRecord<String,String> record: records)
            {
                System.out.printf("Key: %s, Value = %s", record.key(), record.value());
            }

        }

上面的代码在记录计数中返回"zero"

1 个答案:

答案 0 :(得分:0)

尝试使用较长的轮询间隔。我尝试了100毫秒的主题,但在检索到任何消息之前,呼叫超时。改为1000毫秒对我有用。