我编写了一个基于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
我遗漏了什么吗?任何帮助都将不胜感激。
1条答案
按热度按时间vfwfrxfs1#
bootstrap.servers
用于建立到kafka群集的初始连接。建立此连接后,代理将发送advertised.listeners
生产者使用这个地址发送消息。在你的情况下,从你的日志可以看出
advertised.listeners
是localhost
. 这就是为什么docker容器会尝试访问自己的localhost。解决方法:你还应该设置
advertised.listeners
在server.properties文件中配置host.docker.internal:9092
从docker容器连接。您可以查看此以了解更多信息。