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