从docker中运行的java producer访问主机上安装的kafka

lmyy7pcs  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(382)

我编写了一个基于java的微服务,它将(producer)写入kafka队列。当我测试我的微服务时,它正在将数据正确地写入Kafka。
这些都是我的设置。

"bootstrap.servers":"localhost:9092",
        "TOPIC":"my.data",
        "PARTITION":"0",
        "key.deserializer":"org.apache.kafka.common.serialization.StringDeserializer",
        "value.deserializer":"org.apache.kafka.common.serialization.StringDeserializer",
        "enable.auto.commit":"false"

当我在docker上安装microservice时,我将设置更改为

"bootstrap.servers":"host.docker.internal:9092",
        "TOPIC":"my.data",
        "PARTITION":"0",
        "key.deserializer":"org.apache.kafka.common.serialization.StringDeserializer",
        "value.deserializer":"org.apache.kafka.common.serialization.StringDeserializer",
        "enable.auto.commit":"false"

microservice失败,出现以下错误。

2020-11-19 18:41:14,958 WARN [org.apa.kaf.cli.NetworkClient] (kafka-producer-network-thread | producer-1) [Producer clientId=producer-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
2020-11-19 18:41:14,967 WARN [org.apa.kaf.cli.NetworkClient] (kafka-producer-network-thread | producer-1) [Producer clientId=producer-1] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected

我遗漏了什么吗?任何帮助都将不胜感激。

vfwfrxfs

vfwfrxfs1#

bootstrap.servers 用于建立到kafka群集的初始连接。建立此连接后,代理将发送 advertised.listeners 生产者使用这个地址发送消息。
在你的情况下,从你的日志可以看出 advertised.listenerslocalhost . 这就是为什么docker容器会尝试访问自己的localhost。
解决方法:你还应该设置 advertised.listeners 在server.properties文件中配置 host.docker.internal:9092 从docker容器连接。
您可以查看此以了解更多信息。

相关问题