我正在为消费者应用程序使用 spring-Kafka 运行一个 spring 应用程序。 在 Kafka 监听器中,我们使用 SpEL 表达式设置了自动启动。我们在运行时更改此值以使此表达式为假。当我们更改属性时,KafkaListener 将停止使用更多消息。
问题:这是停止轮询更多记录的正确方法,还是我们应该使用 kafkaListenerEndpointRegistry 并停止服务?这两者有什么区别?
另一个问题,如果我有另一个应用程序使用同一个消费者组,所有分区都会重新分配给该应用程序吗?
最佳答案
autoStartup
仅被考虑一次(在应用程序上下文初始化期间)。如果为 true,容器将启动,如果为 false,则不会。
初始化后在运行时更改属性不会停止容器。
在上下文启动并运行后,您必须通过容器注册表使用停止/启动来停止/启动容器。
如果您在同一个组中有多个实例,分区将分布在各个实例中;一个分区只能由同一组中的一个消费者消费。
关于spring-boot - spring-kafka KafkaListener 运行时自动启动行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64127615/