【问题标题】:kafka Can't receive messages from external producerkafka 无法接收来自外部生产者的消息
【发布时间】:2018-04-19 23:05:20
【问题描述】:

我在 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 容器,一切正常,我的问题是当我尝试从外部生产者发送消息时,消息永远不会到达,我搜索此错误并找到了此 link我需要配置advertised.host.name 和advertized.port,但是在更改这些属性并尝试运行我的kafka 容器后,我得到下一个错误:

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

我也尝试使用此属性:

listeners=PLAINTEXT://ip:9092

但是我得到了同样的错误,如果我没有对 kafka 进行任何更改并且我尝试从我的 spring boot 应用程序发送一条消息,我会得到这个错误:

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

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

提前致谢。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    找了很多才找到这个link,我只需要指定主机的ip地址而不是docker容器的ip,这个ip需要在advertising.listeners属性上:

    advertised.listeners=PLAINTEXT://myip:9092
    

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 2020-09-19
      • 2019-09-24
      • 2015-06-19
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多