使用spring-kafka,有两种类型的Kafka侦听器。
@KafkaListener(groupId = "group1", topics = {"my.topic"})
public void listenSingle(String message, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
/* Process my kafka message */
}
/*
Consumer factory is initialized with setBatchListener(true)
*/
@KafkaListener(groupId = "group1", topics = {"my.topic"})
public void listenBatch(List<String> messages, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) throws Exception {
messages.forEach({
/* Process my kafka message */
});
}
根据文档,它似乎对Kafka用户(不会轮询多个消息)没有任何影响。
然后我不明白为什么我应该使用批处理侦听器而不是其他批处理侦听器,因为批处理侦听器有一些记录侦听器没有的限制(拦截器,偏移量管理等)?
也许我误会了什么?批处理侦听器有什么好处?