如何在 testcontainers kafka 映像中执行 kafka-configs 命令

Posted

技术标签:

【中文标题】如何在 testcontainers kafka 映像中执行 kafka-configs 命令【英文标题】:How to execute kafka-configs command inside testcontainers kafka image 【发布时间】:2019-06-25 22:23:42 【问题描述】:

我正在使用testcontainers kafka image,它是confluent cp-kafka,我需要使用命令修改kafka config:

./kafka-configs.sh --alter --entity-name <TOPIC_NAME> --entity-type topics --add-config message.timestamp.type=LogAppendTime --zookeeper <HOST>:<PORT>

我在使用 KafkaContainer::execInContainer 执行此命令时遇到问题,它不会产生这样的文件或目录。

我在 ubuntu 上查看了 github 镜像和 confluent 安装,它应该位于的位置,并尝试了各种选项,但均未成功。

如何正确地做到这一点?

【问题讨论】:

理想情况下,您应该运行 kafka-configs 在单元测试中使用的实际 Java API,而不是调用 shell 脚本 【参考方案1】:

./kafka-configs.sh 假定 kafka-configs.sh 在当前目录中可用,但实际情况可能并非如此(尝试运行 cwdls -la 并检查输出)。

但是如果你在kafka-configs.sh之前删除./,它应该使用PATH变量中的命令,该变量应该是在Kafka镜像中配置的。

【讨论】:

我试过这两个选项都没有成功。错误是kafka-config can not be found in $PATH

以上是关于如何在 testcontainers kafka 映像中执行 kafka-configs 命令的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 testcontainers 和 spring-kafka 准备测试

如何使用 Junit 5 使用 Testcontainer 对 Kafka 运行集成测试

Kafka TestContainer 尝试连接到错误的地址

TestContainers Kafka 清理

spring boot kafka 在将 testcontainers 与 kafka、zookeeper、模式注册表一起使用时因“代理可能不可用”而失败

TestContainers 中的 KafkaContainer 挂起直到超时,并显示“等待容器端口打开超时”