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

时间:2016-08-02 09:00:56

标签: java docker apache-kafka kafka-producer-api

我在端口5000上的docker容器中运行了一个休息服务,该服务用于通过停靠在Docker容器中的kafka主题生成消息。

我使用以下属性配置我的生产者客户端: -

bootstrap.servers=localhost:9093

我已用下面的命令启动了我的内容: -

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

我还在下面的配置中宣传了kafka主机和端口

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

尽管在我尝试制作一个kafka主题时有所有配置,但我得到以下错误: -

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

有人可以指出实际问题在哪里吗?

1 个答案:

答案 0 :(得分:3)

在现实生活中,advertised.host.name永远不应该是localhost

在您的情况下,您在桥接网络模式下运行Docker容器,因此它无法通过localhost到达代理,因为它将指向容器网络,而不是主机

要使其正常工作,您应该将advertised.host.namebootstrap.servers设置为ifconfig docker0返回的IP地址(在您的情况下可能不是docker0,但您明白了)。

或者,您可能会使用--net=host运行容器,但我认为您可以更好地配置广告主机名。