【问题标题】:Kafka Topic Creation using Spring Boot使用 Spring Boot 创建 Kafka 主题
【发布时间】:2021-07-12 12:33:48
【问题描述】:

我正在尝试使用 Spring Boot 在 Kafka 中创建一个新主题。

在谷歌搜索后,我得到了以下答案

@Configuration
public class KafkaTopicConfiguration {
  
  @Bean
  public NewTopic createTopic(Topic topic) {
    return TopicBuilder.name(topic.getTopicName())
      .partitions(topic.getPartitions())
      .replicas(topic.getReplicas())
      .build();
  }
}

但我无法使用 Spring Boot REST POST 调用实现以下功能。

    @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();
  }

有人可以帮忙吗。

提前致谢

【问题讨论】:

    标签: spring-boot apache-kafka spring-kafka


    【解决方案1】:

    NewTopic bean 仅在应用程序初始化期间创建。在运行时调用 bean 工厂方法没有任何作用。

    要动态创建主题,您需要使用AdminClient。 Spring Boot 自动配置一个 KafkaAdmin bean。

    您可以使用其属性创建AdminClient

    然后使用客户端创建您的主题。

    try (AdminClient client = AdminClient.create(kafkaAdmin.getConfigurationProperties()) {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多