我正在使用注释@KafkaListner 来收听特定主题。但是突然我注意到消费者接收来自生产者的消息有很大的滞后。然后我增加了broker的分区数,问题就解决了。
经过一番研究,我发现一个消费者组中的消费者数量不能超过分区数量,否则部分消费者将处于非活动状态。
那么在 Spring Boot 中,是否每个单独的 @KafkaListener 都被视为单个消费者?如果没有,我如何才能找到消费者组中消费者的确切数量,从而能够正确配置分区?
答案 0 :(得分:1)
每个@KafkaListener 是否被视为单个消费者?
不,它是一个消费者组,可以有一个(默认)或多个消费者线程(容器)。您可以使用 concurrency
属性覆盖 ContainerFactory 默认属性。
如您所见,主题分区的数量决定了并行度。如果并发大于分区数,则将并发调低,使每个Container得到一个分区。