我试图为使用Kafka的项目的一部分设置一些集成测试。我选择使用包含kafka和Zookeeper的spotify/kafka泊坞窗映像。 如果我运行该项目站点所描述的kafka容器,我可以在本地机器上运行我的测试(并且它们会通过!)。但是,当我尝试在我的ec2构建服务器上运行它时,容器就会死掉。最终的致命错误是" INFO放弃了:kafka进入致命状态,太多开始重试太快"。
我怀疑它并不喜欢传入的地址。我已尝试使用ec2提供的公共和私有IP地址,但结果都是相同的,就像使用本地主机。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
它现在神奇地起作用,尽管我仍然正在做我以前做的事情。但是,为了帮助其他可能出现的人,我会发布我所做的工作以使其发挥作用。
我创建了以下批处理文件,让jenkins将其作为构建步骤运行。
#!/bin/bash
if ! docker inspect -f 1 test_kafka &>/dev/null
then docker run -d --name test_kafka -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=localhost --env ADVERTISED_PORT=9092 spotify/kafka
fi
即使localhost解析为私有IP地址,它现在似乎也接受了。 if块只是测试容器是否已经存在并以其他方式重用。