首页 > 解决方案 > Spring Kafka:记录侦听器与批处理侦听器

问题描述

使用 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 消费者没有任何影响(无论如何都会轮询多条消息)。

然后我不明白为什么我应该使用批处理侦听器而不是另一个,因为批处理侦听器有一些记录侦听器没有的限制(拦截器、偏移管理等)?

也许我误解了什么?批处理侦听器有什么好处?

标签: javaspringapache-kafkaspring-kafka

解决方案


推荐阅读