无法从docker中运行的服务向kafka生成消息

368yc8dk  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(453)

我有一个rest服务运行在端口5000的docker容器中,用于在docker容器中运行的kafka主题上生成消息。
我已使用以下属性配置producer客户端:-

bootstrap.servers=localhost:9093

我从下面开始我的工作command:-

docker run -d -p 127.0.0.1:5000:5000 <contained id>

我还做了以下配置来公布kafka主机和端口

advertised.host.name=localhost
advertised.port=9093

尽管有所有的配置,当我试图产生一个Kafka主题,然后我得到下面error:-

org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

有人能指出真正的问题在哪里吗?

kpbpu008

kpbpu0081#

在现实生活中, advertised.host.name 不应该是 localhost .
在您的例子中,您在网桥网络模式下运行docker容器,因此它将无法通过 localhost ,因为它将指向容器网络,而不是主机。
要使它工作,你应该设置 advertised.host.name 以及 bootstrap.servers 返回的ip地址 ifconfig docker0 (在你的情况下可能不是docker0,但你明白了)。
或者,您可以使用 --net=host ,但我认为您最好正确配置播发的主机名。

相关问题