我试图通过在属性文件中进行更改来更改ConsumerConfig属性,这将由@scheduled方法监视(这将查找任何属性值的更改并在更新从中选取的容器工厂bean实例后重新初始化使用者应用上下文)。
例如:如果将新代理添加到集群,我只需更新属性文件中的代理列表。
答案 0 :(得分:1)
KafkaConsumer
及其ConsumerConfig
来自DefaultKafkaConsumerFactory
KafkaMessageListenerContainer
。
DefaultKafkaConsumerFactory
为消费者注入了Map
个配置。我认为这正是您应该考虑从@Scheduled
方法更改属性的地方。更改后,您应该再次stop()
侦听容器和start()
- 将根据新配置创建新的KafkaConsumer
。
但是consumerGroupId
确实应该通过ContainerProperties
进行更改。
为此目的,只需通过MessageListenerContainer.getContainerProperties().setGroupId(String groupId)
更改它。