ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

kafka 单分区concurrency 配置

kafka 单分区concurrency 配置 结论很明确在这个配置下concurrency: 10几乎完全无效只会白白浪费系统资源。⚙️ 为什么concurrency: 10会失效Kafka 有一个核心规则在同一个消费者组里一个分区同时只能被一个消费者线程消费。concurrency参数的作用就是让 Spring Kafka 为一个KafkaListener创建 N 个消费者线程。但创建出来的线程要想真正工作就必须分配到分区。当只有一个分区时无论你创建多少个线程最终只会有一个线程被分配到分区并工作其余 9 个线程将永远处于空闲状态。Kafka 保证一个分区内的消息绝对有序。如果允许多个线程同时消费一个分区顺序就无法保证了。 可行的应对方案虽然无法直接提高并发但可以根据业务特性选择合适的方案方案一增加分区根本解决这是最根本的扩容方式。如果数据量确实大可以考虑增加该 Topic 的分区数如增加到 10 个或更多这样就可以通过多线程并发消费水平提升吞吐量。方案二消息内按 Key 并发处理引入复杂性Kafka 无法保证多线程但你可以在业务代码层面实现并发。如果对消息顺序有要求可以按 Key如plateNumber分组后提交给线程池处理保证同一 Key 的消息顺序执行。但这种方式需要自己处理异常和提交偏移量实现复杂需谨慎评估
返回列表