我有一个用例,我将Twitter数据流式传输并存储到kafka主题中。 我希望在主题更新时在UI上显示此数据。我正在使用websocket来获取它。 我从kafka主题获取数据时遇到问题。我是kafka的新手,不知道如何只从主题中获取更新的记录。 设置" auto.offset.reset"到"最新"解决我的问题? 如果我的问题需要更多信息,请告诉我。
添加我的代码..
public class ConsumerTest {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
ConsumerTest test = new ConsumerTest();
test.startTwitterConsumer();
}
void startTwitterConsumer() throws JsonParseException, JsonMappingException, IOException {
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.11.208:9092");
props.put("group.id", "group-04691");
props.put("enable.auto.commit", "false");
props.put("auto.commit.interval.ms", "500");
props.put("auto.offset.reset", "earliest");
props.put("session.timeout.ms", "30000");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("client.id", "w3l");
props.put("max.poll.records", "500");
KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(props);
List<ConsumerRecord<String, String>> li;
kafkaConsumer.subscribe(Arrays.asList("dem"));
ConsumerRecords<String, String> records;
do{
records = kafkaConsumer.poll(1000);
if(records.count()>0)
{
//li = new ArrayList<>();
for(ConsumerRecord<String, String>record:records){
System.out.println(record.offset());
}
kafkaConsumer.commitAsync();
break;
}else{
System.out.println("No records");
}
}while(records.count()==0);
}
}
每次执行此代码后,我都会得到相同的偏移值,即从5到321。