如何使用测试容器有效地创建Kafka主题?

时间:2019-12-03 20:10:10

标签: apache-kafka testcontainers

我正在将testcontainers.org与KafkaContainer一起使用。

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

kafkaContainer.execInContainer("/bin/sh", "-c", "/usr/bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topicName");

因为每个主题大约需要3-5秒,所以我想知道是否有更有效的方法来创建多个主题。 还是有一个简单的开关可以按需自动创建主题?

2 个答案:

答案 0 :(得分:0)

  1. wurstmeister/kafka容器与KAFKA_CREATE_TOPICS环境变量一起使用

  2. 您可以使用更高级别的Kafka客户端,例如Spring-Kafka或Dropwizard-Kafka,它们可以提供主题创建功能。

  3. 否则,直接use AdminClient

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

答案 1 :(得分:0)

作为参考,使用AdminClient效率最高。

这里是一个例子:


java.lang.Exception: No runnable methods
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:137)