使用spring创建多个kafka主题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用spring创建多个kafka主题相关的知识,希望对你有一定的参考价值。

我正在创建一个Spring-boot应用程序,它将创建多个主题。我正在从.csv文件中获取主题名称和配置的列表。我正在尝试此代码,但它只能创建一个主题,但不利于使用此主题创建多个主题。是否可以使用spring创建多个主题?

@Bean
public KafkaAdmin admin()
    Map<String, Object> configs = new HashMap<>();
    configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");
    return new KafkaAdmin(configs);

@Bean
public NewTopic topic1() 
        NewTopic topic = new NewTopic(String.format("topic%d",1), 10, (short) 1);
        Map<String, String> extraTopicConfig = new HashMap<String, String>();
        extraTopicConfig.put(TopicConfig.CLEANUP_POLICY_CONFIG, "compact");
        extraTopicConfig.put(TopicConfig.MIN_IN_SYNC_REPLICAS_CONFIG, "1");
        topic.configs(extraTopicConfig);
        return topic;


答案

我遇到这个老问题,寻找答案。我这样解决了:

@Configuration
public class TopicCreation 
  final String[] topicNames = new String[] "topic1", "topic2";
  final SingletonBeanRegistry beanRegistry;

  public TopicCreation(GenericApplicationContext context) 
    this.beanRegistry = context.getBeanFactory();
  

  @PostConstruct
  public void createTopics() 
    for (String topic : topicNames) 
      NewTopic newTopic = TopicBuilder.name(topic)
          .replicas(1)
          .partitions(1)
          .build();
      beanRegistry.registerSingleton("topic-" + topic, newTopic);
    
  

以上是关于使用spring创建多个kafka主题的主要内容,如果未能解决你的问题,请参考以下文章

用 spring 管理 Kafka 主题

如何在 spring-boot 应用程序启动期间创建许多 kafka 主题?

无法从自动创建的 kafka 主题中获取消息

kafka是否为每个消费者创建一个单独的连接?

Spark:并行处理多个kafka主题

Kafka:使用普通消费者组访问多个主题