Spring boot 我是否有可能在SpringKafka中在运行时向生产者和消费者提供配置详细信息?

Spring boot 我是否有可能在SpringKafka中在运行时向生产者和消费者提供配置详细信息?,spring-boot,apache-kafka,spring-kafka,Spring Boot,Apache Kafka,Spring Kafka,我们正在使用SpringBoot将项目迁移到微服务。我有一个要求,即我应该能够使用配置细节(如引导服务器和用户在运行时提供的键值服务)运行生产者和消费者 在早期的项目中,我可以使用java Apache Kafka API实现这一点,但我看不到使用spring Kafka API实现这一点的任何方法,因为它只允许通过spring java配置类或application.properties定义与生产者或消费者相关的配置。您可以在运行时覆盖这两者的任何属性消费者和生产者 使用ConcurrentK

我们正在使用SpringBoot将项目迁移到微服务。我有一个要求,即我应该能够使用配置细节(如引导服务器和用户在运行时提供的键值服务)运行生产者和消费者


在早期的项目中,我可以使用java Apache Kafka API实现这一点,但我看不到使用spring Kafka API实现这一点的任何方法,因为它只允许通过spring java配置类或application.properties定义与生产者或消费者相关的配置。

您可以在运行时覆盖这两者的任何属性消费者和生产者

使用
ConcurrentKafkListenerContainerFactory
创建侦听器容器:

@Autowired
卡夫卡利斯特集装箱工厂;
...
ConcurrentMessageListenerContainer=factory.createContainer(“someTopic”);
container.getContainerProperties()
.getKafkaConsumerProperties()
.setProperty(ConsumerConfig.BOOTSTRAP\u SERVERS\u CONFIG,“…”);
...
container.getContainerProperties().setMessageListener(someListener);
container.start();
在生产者方面,使用此构造函数:

/**
*使用提供的producer factory和属性创建实例,并使用
*自动刷新错误。如果configOverrides不为null或空,则新的
*{@link DefaultKafkaProducerFactory}将使用合并的生产者属性创建
*在提供的工厂属性之后应用替代。
*@param producerFactory生产者工厂。
*@param configOverrides生产者配置属性以覆盖。
*@自2.5
*/
公共KafkaTemplate(ProducerFactory ProducerFactory,@Nullable Map configOverrides){
这(producerFactory、false、configOverrides);
}

选择spring kafka而不是使用现有的apache kafka api有什么具体原因吗?包括其他模块在内的整个应用程序正在迁移到spring boot。我正在探索是否可以在这里使用spring boot kafka API,而不是Apache kafka API?是的,您肯定可以探索spring kafka,但就个人而言,我使用Apache kafka API只是为了更加独立和解耦。嗨,Gary。谢谢你的回复。你能解释一下吗?只是想确定,在spring boot应用程序启动后,是否可以在运行时按需创建、启动或停止新的生产者或消费者。当然,可以使用上面的代码创建和启动新的容器或模板,并
stop()
容器和
destroy()
模板(关闭其生产者)当你不再需要它们的时候。