注意:使用的Kafka版本:kafka_2.11-0.9.0.1
我有一个名为test-kafka
的主题,3 partitions
和1 replication factor
,此主题在每个分区中都有一些字符串数据,即key and value pair
。
当我尝试通过消费者api获取记录时,consumer.poll
函数无法获取任何记录并提供records.count =0
但是当我使用相同的逻辑而只有single parition
时然后它运作良好并取得记录。
我认为Kafka会在内部处理多个分区,并会从每个分区逐个获取记录,我只需要subscribe
到topic
。
任何人都可以在这里帮忙吗?
参考代码段:
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"
。
答案 0 :(得分:0)
尝试使用较长的轮询间隔。我尝试了100毫秒的主题,但在检索到任何消息之前,呼叫超时。改为1000毫秒对我有用。