如何与运行在docker中的kafka服务器通信

mznpcxlj  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(373)

我在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作为主机?或者我还有什么遗漏/做得不对吗?

k4aesqcs

k4aesqcs1#

更新 advertised.host.name 已弃用,并且 --override 应该避免。
添加/编辑 advertised.listeners 成为

[PROTOCOL]://[EXTERNAL.HOST.NAME]:[PORT]

还要确保 PORT 也列在属性中 listeners 在连续数小时调查此问题后,发现有一种方法可以在启动kafka服务器时设置主机名,如下所示: kafka-server-start.sh --override advertised.host.name= (在我的例子中:localhost)

相关问题