spring-boot - 使用 Spring Boot 创建 Kafka 主题

标签 spring-boot apache-kafka spring-kafka

我正在尝试使用 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();
  }

有人可以帮忙吗

提前致谢

最佳答案

NewTopic bean 仅在应用程序初始化期间创建。在运行时调用 bean 工厂方法什么都不做。

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

您可以使用其属性创建一个 AdminClient

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

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

关于spring-boot - 使用 Spring Boot 创建 Kafka 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68347459/

相关文章:

java - 无法使用 Spring Boot 将简单的 "Hello World"消息发送到 RabbitMQ 队列

apache-kafka - kafka-consumer-groups CLI 未显示 node-kafka 消费者组

java - 不同版本的客户端,在单一版本的 Kafka 代理上

node.js - 主题不存在错误 : The topic(s) xxx do not exist in kafka-node?

java - 嵌入式 Spring-Kafka 导致不相关的单元测试失败

java - Spring Integration Kafka 与 Spring Kafka

java - 从@Configuration访问server.servlet.context-path

java - Spring Data Reactive Mongo : Class type converter

spring-boot - Spring Boot 单元测试端点 NullPointerException - 以及如何达到 100% 的覆盖率

java - @KafkaListener 正常关闭,批处理 Kakfa 监听器不工作