2016-08-02 70 views
4

我在端口5000上的docker容器中运行了一项休息服务,该服务用于通过kafka主题生成运行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 

尽管所有的配置,当我尝试刺激然后我得到下面的错误: -

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

有人可以请指出实际问题是哪里?

回答

3

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

就你的情况而言,你在桥联网模式下运行你的Docker容器,所以它不能通过localhost到达代理,因为它将指向容器网络,而不是主机。

为了使它工作,你应该设置advertised.host.namebootstrap.serversifconfig docker0返回的IP地址(可以在你的情况下,可以不docker0,但你明白了吧)。

或者,您可能会用--net=host运行您的容器,但我认为您最好正确配置广告主机名称。