首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用testcontainers高效创建Kafka主题?

如何使用testcontainers高效创建Kafka主题?
EN

Stack Overflow用户
提问于 2019-12-04 04:10:10
回答 2查看 3.5K关注 0票数 8

我在KafkaContainer中使用testcontainers.org。

目前,我使用kafka-topics在启动容器后创建一个主题:

代码语言:javascript
运行
复制
kafkaContainer.execInContainer("/bin/sh", "-c", "/usr/bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topicName");

由于每个主题大约需要3-5秒,我想知道是否有更有效的方法来创建多个主题。或者,是否有一个简单的切换来按需自动创建主题?

EN

回答 2

Stack Overflow用户

发布于 2019-12-05 17:01:13

作为参考,使用AdminClient是最有效的。

下面是一个示例:

代码语言:javascript
运行
复制
  private static void createTopics(String... topics) {
    var newTopics =
        Arrays.stream(topics)
            .map(topic -> new NewTopic(topic, 1, (short) 1))
            .collect(Collectors.toList());
    try (var admin = AdminClient.create(Map.of(BOOTSTRAP_SERVERS_CONFIG, getKafkaBrokers()))) {
      admin.createTopics(newTopics);
    }
  }

  private static String getKafkaBrokers() {
    Integer mappedPort = kafkaContainer.getFirstMappedPort();
    return String.format("%s:%d", "localhost", mappedPort);
  }
票数 7
EN

Stack Overflow用户

发布于 2019-12-04 06:40:21

  1. 使用带有KAFKA_CREATE_TOPICS环境变量的wurstmeister/kafka容器
  2. 你可以使用更高级别的Kafka客户端,如Spring-Kafka或Dropwizard-Kafka,它们提供主题创建功能。
  3. 否则,use AdminClient directly

建议不要在代理上启用自动主题创建,因为这样会有默认的分区计数和复制因子

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59164611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档