我在一台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
有人可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
经过大量搜索我找到了这个link,我只需要指定主机的ip地址而不是docker容器的ip,这个ip需要在advertised.listeners属性上:
advertised.listeners=PLAINTEXT://myip:9092
希望这有助于其他人。