我在scala应用程序中使用apache kafkaconsumer与kafka服务器对话,其中kafka和zookeeper服务在我的vm上的docker容器中运行(scala应用程序也在这个vm上运行)。我已经将kafkaconsumer的属性“bootstrap.servers”设置为使用127.0.0.1:9092。
kafkaconsumer会记录“向代理127.0.0.1:9092发送组queuemanager\u testgroup的协调器请求”。问题似乎是kafka客户机代码基于它接收的响应设置协调器值,该响应包含responsebody={error\u code=0,coordinator={node\u id=0,host=e7059f0f6580,port=9092},这就是它为将来的连接设置主机的方式。随后,它抱怨无法解析地址:e7059f0f6580
地址e7059f0f6580是该docker容器的容器id。我用telnet测试过,我的vm没有检测到这个主机名。
我需要更改什么设置,以便docker上的kafka在其响应中返回localhost/127.0.0.1作为主机?或者我还有什么遗漏/做得不对吗?
1条答案
按热度按时间k4aesqcs1#
更新
advertised.host.name
已弃用,并且--override
应该避免。添加/编辑
advertised.listeners
成为还要确保
PORT
也列在属性中listeners
在连续数小时调查此问题后,发现有一种方法可以在启动kafka服务器时设置主机名,如下所示:kafka-server-start.sh --override advertised.host.name=
(在我的例子中:localhost)