java - 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 消费者没有任何影响(无论如何都会轮询多条消息)。
然后我不明白为什么我应该使用批处理侦听器而不是另一个,因为批处理侦听器有一些记录侦听器没有的限制(拦截器、偏移管理等)?
也许我误解了什么?批处理侦听器有什么好处?
解决方案
推荐阅读
- php - 我可以通过单击一个按钮来触发两种表单方法获取和发布吗?
- c++ - 如何在 DriverKit 系统扩展中分配内存并将其映射到另一个进程?
- html - 当我将文本输入单个 div 时,我所有的 div 都会扩展
- python - Pandas CSV 分隔符、特殊字符和插入行问题
- java - 使用 maven shade 插件构建后出现 MessageBodyProviderNotFoundException [已解决]
- mongodb - 在本地 Windows 10 上运行 metoer 的 mongorestore 集合
- flutter - 在 Flutter 中使用 DropDownField 无法获得价值
- r - dplyr / base R:使用行索引的逻辑组合计算新列
- pandas - 随机数据框列排序
- python-3.x - 如何检查这个双端队列在 Python 中是否为空?