0
votes

I have a Kafka topic with 50 partitions.
My Spring Boot application uses Spring Kafka to read those messages with a @KafkaListener

The number of instances of my application autoscale in my Kubernetes.

By default, it seems that Spring Kafka launch 1 consumer thread per topic.

org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1

So, with a unique instance of the application, one thread is reading the 50 partitions.
With 2 instances, there is a load balancing and each instance listen to 25 partitions. Still with 1 thread per instance.

I know I can set the number of thread using the concurrency parameter on @KafkaListener.
But this is a fixed value.

Is there any way to tell Spring to dynamically adapt the number of consumer threads to the number of partition the client is currently listening?