如何增加Spring Kafka Consumer每批消费的消息数?

Posted

技术标签:

【中文标题】如何增加Spring Kafka Consumer每批消费的消息数?【英文标题】:How to increase the number of messages consumed by Spring Kafka Consumer in each batch? 【发布时间】:2018-10-21 07:42:44 【问题描述】:

我正在构建一个 Kafka Consumer 应用程序,它使用来自 Kafka 主题的消息并执行数据库更新任务。消息每天大批量生成一次 - 因此主题在 10 分钟内加载了大约 100 万条消息。该主题有 8 个分区。

Spring Kafka 消费者(使用 @KafkaListener 注释并使用 ConcurrentKafkaListenerContainerFactory)以非常短的批次触发。

批量大小有时只有 1 或 2 条消息。如果它可以一次使用大约 1000 条消息并一起处理它们(例如,我可以在单个更新 SQL 中更新数据库),而不是为每条消息连接到数据库,这将有助于提高性能。

我已经尝试降低工厂的并发性,以避免多个线程消耗更少的消息。

我还将 Kafka 的 server.properties 中的 socket.send.buffer.bytes 属性从 102400 增加到 1024000。

这些步骤并未增加批量大小。

我可以使用其他配置来增加消费者的浴缸尺寸吗?

【问题讨论】:

【参考方案1】:

查看 kafka 消费者属性max.poll.recordsfetch.min.bytesfetch.max.wait.msfetch.max.bytesmax.partition.fetch.bytes

fetch.min.bytesfetch.max.wait.ms 很可能是您需要的。

【讨论】:

以上是关于如何增加Spring Kafka Consumer每批消费的消息数?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建kafka consumer

kafka的consumer.properties的group.id到底有啥用

kafka consumer重新连接后如何获取当前最新数据

如何在Kafka上对一个Topic增加partition

springboot kafka集成(实现producer和consumer)

Kafka Consumer 在 Spring Boot 中没有收到消息