我目前在我的Kafka消费者中有一些这样的代码:
KafkaStream<byte[], byte[]> stream = consumerMap.get(topic).get(0);
ConsumerIterator<byte[], byte[]> it = stream.iterator();
while(it.hasNext()){
String receivedData = new String(it.next().message());
// do some processing
}
哪种方法效果很好,接收每条消息。现在我想跳过一些消息,因为例如我只想要一个消息样本。我不想接收它们,因为我不想浪费带宽。所以例如我想要下面的东西:
KafkaStream<byte[], byte[]> stream = consumerMap.get(topic).get(0);
ConsumerIterator<byte[], byte[]> it = stream.iterator();
while(it.hasNext()){
if(sample){
String receivedData = new String(it.next().message());
// do some processing
} else {
it.skip(); // does not use bandwidth to receive message
}
}
在这种情况下,it.skip()
应该只是跳过消息,而不是占用带宽来实际通过网络传输它。我相信答案与推进补偿有关,但我似乎找不到任何具体的功能。