【发布时间】:2018-03-29 05:59:24
【问题描述】:
我对 Kafka 和 Docker 完全陌生,并且遇到了一个需要解决的问题。我们针对 Kafka (Apache) 队列的持续集成测试在本地机器上运行良好,但在 Jenkins CI 服务器上时,偶尔会因此类错误而失败:
%3|1508247800.270|FAIL|art#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused
%3|1508247800.270|ERROR|art#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused
%3|1508247800.270|ERROR|art#producer-1| [thrd:localhost:9092/bootstrap]: 1/1 brokers are down
工作原理是 Docker 镜像需要时间来启动,到那时 Kafka 生产者已经放弃了。有问题的代码是
producer_properties = {
'bootstrap.servers': self._job_queue.bootstrap_server,
'client.id': self._job_queue.client_id
}
try:
self._producer = kafka.Producer(**producer_properties)
except:
print("Bang!")
上面的错误行出现在生产者的创建中。但是,没有引发异常,并且该调用返回一个看起来有效的生产者,因此我无法以编程方式测试代理端点的存在。是否有用于检查代理状态的 API?
【问题讨论】:
-
您是否从同一个 docker 容器运行 Kafka 代理?您使用的是哪个 Python Kafka 库?
-
我认为 Kafka 代理位于同一个 Docker 容器中(刚刚遇到这个问题,之前没有接触过该技术),我们正在使用 Adobe Confluent Kafka 库。跨度>
标签: python docker jenkins apache-kafka