我试图在Kafka中创建一个新的主题使用Spring Boot 。
在谷歌搜索,我得到了下面的答案
@Configuration
public class KafkaTopicConfiguration {
@Bean
public NewTopic createTopic(Topic topic) {
return TopicBuilder.name(topic.getTopicName())
.partitions(topic.getPartitions())
.replicas(topic.getReplicas())
.build();
}
}
但是我无法使用Sping Boot REST POST Call实现以下内容。
@PostMapping("/api/v1/kafkatopic/")
public NewTopic createTopic(@RequestBody Topic topic)
{
return kt.createTopic(topic);
}
//kt being object of the Configuration Class
但是,如果主题详细信息已经沿着如下代码(硬编码)传递,则相同的代码也可以工作。
@Bean
public NewTopic createTopic() {
return TopicBuilder.name("test-topic")
.partitions(6)
.replicas(3)
.build();
}
谁来帮帮忙。
先谢了
2条答案
按热度按时间zbdgwd5y1#
NewTopic
Bean仅在应用程序初始化期间创建。在运行时调用Bean工厂方法不会执行任何操作。要动态创建主题,您需要使用
AdminClient
。Sping Boot 会自动配置KafkaAdmin
bean。您可以使用
AdminClient
的属性来建立它。然后使用客户端创建主题。
jucafojl2#