当主题使用新数据更新时,从kafka轮询数据

时间:2018-04-17 04:28:09

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

我有一个用例,我将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。

0 个答案:

没有答案