【发布时间】:2017-06-25 08:58:04
【问题描述】:
我在我的 Scala 应用程序中使用 apache KafkaConsumer 与 Kafka 服务器通信,其中 Kafka 和 Zookeeper 服务在我的 VM 上的 docker 容器中运行(scala 应用程序也在此 VM 上运行)。我已将 KafkaConsumer 的属性“bootstrap.servers”设置为使用 127.0.0.1:9092。
KafkaConsumer 确实记录了“将组 queuemanager_testGroup 的协调器请求发送到代理 127.0.0.1:9092”。问题似乎是 Kafka 客户端代码正在根据它收到的响应设置协调器值,其中包含 responseBody={error_code=0,coordinator={node_id=0,host=e7059f0f6580 ,port=9092}} ,这就是它为将来的连接设置主机的方式。随后它抱怨它无法解析地址:e7059f0f6580
地址 e7059f0f6580 是该 docker 容器的容器 ID。 我已经使用 telnet 进行了测试,我的 VM 没有将其检测为主机名。
我需要更改什么设置,以便我的 docker 上的 Kafka 在其响应中返回 localhost/127.0.0.1 作为主机?或者还有其他我遗漏/做错的事情吗?
【问题讨论】:
-
嗯......更相关的问题是 - “你如何运行容器化的 kafka 服务”。 Kafka 需要 zookeeper 才能工作。通常人们使用 docker-compose 来运行依赖容器。所以……你需要提供你的 Dockerfile、docker-compose.yaml 或者启动这些容器的命令。
-
还有一件事...请花一些时间来了解 docker 的一些更简单的东西,例如 hello-world Web 应用程序。一旦你明白了,你就会明白这个问题的答案。
标签: networking docker apache-kafka