如何与在docker

时间:2017-02-07 22:34:43

标签: networking docker apache-kafka

我在我的Scala应用程序中使用apache KafkaConsumer与Kafka服务器通信,其中Kafka和Zookeeper服务在我的VM上的docker容器中运行(scala应用程序也在此VM上运行)。我已经设置了KafkaConsumer的属性" bootstrap.servers"使用 127.0.0.1 :9092。

KafkaConsumer会记录,"将group queuemanager_testGroup的协调员请求发送到代理127.0.0.1:9092"。问题似乎是Kafka客户端代码根据收到的响应设置协调器值,其中包含 responseBody = {error_code = 0,coordinator = {node_id = 0,host = e7059f0f6580 ,port = 9092}} ,这就是它为将来的连接设置主机的方式。随后它抱怨它无法解析地址:e7059f0f6580

地址e7059f0f6580是该泊坞窗容器的容器ID。 我已经使用telnet测试过我的VM没有将其检测为主机名。

我需要更改哪些设置,以便我的docker上的Kafka在其响应中返回localhost / 127.0.0.1作为主机?或者还有其他我错过/做错的事情吗?

1 个答案:

答案 0 :(得分:0)

经过几个小时的调查这个问题,发现有办法 在启动Kafka服务器时设置主机名,如下所示: kafka-server-start.sh --override advertised.host.name=xxx(在我的情况下:localhost)