Java 无法按需读取卡夫卡的记录

Java 无法按需读取卡夫卡的记录,java,apache-kafka,Java,Apache Kafka,我正在使用制作人将数据推送到卡夫卡队列中 然后我需要按需使用/读取数据,基本上我希望在启动RESTAPI时,我应该能够从kafka读取一条记录并返回。 我不希望消费者在数据到达队列时立即被调用,而应该在我想调用时被调用 通常的读取方法是将其置于while循环下,然后调用poll方法,当数据到达队列时,该方法将继续被调用。 但是我想控制我读取记录的时间。您仍然可以按需创建消费者,让它处理并返回单个记录。大概是这样的: ... properties.setProperty(ConsumerCo

我正在使用制作人将数据推送到卡夫卡队列中

然后我需要按需使用/读取数据,基本上我希望在启动RESTAPI时,我应该能够从kafka读取一条记录并返回。 我不希望消费者在数据到达队列时立即被调用,而应该在我想调用时被调用

通常的读取方法是将其置于while循环下,然后调用poll方法,当数据到达队列时,该方法将继续被调用。
但是我想控制我读取记录的时间。

您仍然可以按需创建消费者,让它处理并返回单个记录。大概是这样的:

...
   properties.setProperty(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, "1");
   properties.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "test-group");
   KafkaConsumer consumer = new KafkaConsumer<>(properties);
   consumer.subscribe(Arrays.asList(topic));
   try {
        while (!timedOut) {
            ConsumerRecords records = consumer.poll(Duration.ofMillis(100));
            if (!records.isEmpty()) {
                // process record and return
            }
        }
        // error, no record found
    } catch (InterruptException e) {
    } finally {
        consumer.close();
    }
...
。。。
setProperty(ConsumerConfig.MAX_POLL_RECORDS_CONFIG,“1”);
setProperty(ConsumerConfig.GROUP_ID_CONFIG,“测试组”);
卡夫卡消费者=新卡夫卡消费者(财产);
consumer.subscribe(Arrays.asList(topic));
试一试{
而(!timedOut){
ConsumerRecords记录=consumer.poll(持续时间:百万分之一百);
如果(!records.isEmpty()){
//过程记录和返回
}
}
//错误,找不到记录
}捕获(中断异常){
}最后{
consumer.close();
}
...

有趣的方法。如何创建一个按需消费者,寻求结束并阅读记录?