kafka无法接收来自外部制作人的消息

时间:2018-04-17 13:06:30

标签: apache-kafka

我在一台linux机器上有docker,在那里我下载kafka版本1.1.0,我也运行了一个zookeeper容器并暴露了端口2181,我将我的server.properties的zookeeper.connect更改为了zookeeper的那个容器,我创建了一个包含kafka的图像,这是我的dockerfile:

FROM openjdk:8
WORKDIR /app
ADD kafka_2.11-1.1.0 /app
ENTRYPOINT bin/kafka-server-start.sh config/server.properties

创建图像后我运行我的kafka容器,一切都很好用,我的问题是当我尝试从外部生产者发送消息时,消息永远不会到达,我搜索这个错误,我发现了这个{{3我需要配置advertised.host.name和advertised.port,但在更改这些属性并尝试运行我的kafka容器后,我得到了下一个错误:

kafka.common.KafkaException: Socket server failed to bind to ip:9092: Cannot assign requested address.

我也尝试使用这个属性:

listeners=PLAINTEXT://ip:9092

但是我得到了同样的错误,如果我没有对kafka进行任何更改并且我尝试从我的Spring启动应用程序发送消息,我会收到此错误:

org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for prueba-0: 30041 ms has passed since batch creation plus linger time

有人可以帮我解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

经过大量搜索我找到了这个link,我只需要指定主机的ip地址而不是docker容器的ip,这个ip需要在advertised.listeners属性上:

advertised.listeners=PLAINTEXT://myip:9092

希望这有助于其他人。