我想创建一个并发@KafkaListener
,它可以处理多个主题,每个主题具有不同数量的分区。
我注意到,Spring-Kafka对于每个分区最多的主题,每个分区仅初始化一个使用者。
示例:我将并发性设置为8。我听了以下主题,得到了@KafkaListener
。主题A的分区最多-5,因此Spring-Kafka初始化5个使用者。我希望Spring-Kafka初始化8个使用者,这是根据我的并发属性允许的最大值。
不初始化更多消费者的技术原因是什么?
如何绕过此方法,以便可以使用@KafkaListener
注释初始化更多使用者? (如果可能的话)
答案 0 :(得分:3)
将侦听器配置为侦听多个主题时,每个使用者实例都侦听所有主题; Spring确实启动了8个使用者(在这种情况下),但是这些分区在各个使用者之间的实际分配方式由Kafka的组管理控制:
在这种情况下,您最终将有3个空闲的使用者。
也许可以提供自定义partition.assignment.strategy
来按照您想要的方式进行分发,但是我从未研究过。
编辑
我刚刚用RoundRobinAssignor
...
spring.kafka.consumer.properties.partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor
和...