【发布时间】:2019-01-31 17:15:28
【问题描述】:
我使用以下 Kafka Docker 镜像:https://hub.docker.com/r/wurstmeister/kafka/
我可以使用以下属性启动 Apache Kafka:
<KAFKA_ADVERTISED_HOST_NAME>${local.ip}</KAFKA_ADVERTISED_HOST_NAME>
<KAFKA_ADVERTISED_PORT>${kafka.port}/KAFKA_ADVERTISED_PORT>
<KAFKA_ZOOKEEPER_CONNECT>zookeeper:2181</KAFKA_ZOOKEEPER_CONNECT>
<KAFKA_MESSAGE_MAX_BYTES>15000000</KAFKA_MESSAGE_MAX_BYTES>
但我在尝试将消息发送到主题时看到以下警告:
WARN 9248 --- [ad | producer-1] org.apache.kafka.clients.NetworkClient : [Producer clientId=producer-1] Error while fetching metadata with correlation id 4 : {post.sent=LEADER_NOT_AVAILABLE}
我在网上看到几篇文章说这个问题可能与KAFKA_ADVERTISED_HOST_NAME和KAFKA_ADVERTISED_PORT等旧属性有关,我应该重新配置为KAFKA_ADVERTISED_LISTENERS和KAFKA_LISTENERS。但是当我使用以下属性启动 Kafka 容器时:
<KAFKA_ADVERTISED_LISTENERS>PLAINTEXT://${local.ip}:${kafka.port}</KAFKA_ADVERTISED_LISTENERS>
<KAFKA_LISTENERS>PLAINTEXT://${local.ip}:${kafka.port}</KAFKA_LISTENERS>
<KAFKA_ZOOKEEPER_CONNECT>zookeeper:2181</KAFKA_ZOOKEEPER_CONNECT>
<KAFKA_MESSAGE_MAX_BYTES>15000000</KAFKA_MESSAGE_MAX_BYTES>
我的应用程序无法连接到 Kafka:
2018-08-25 16:20:57.407 INFO 17440 --- [ main] o.a.kafka.common.utils.AppInfoParser : Kafka version : 1.1.0
2018-08-25 16:20:57.408 INFO 17440 --- [ main] o.a.kafka.common.utils.AppInfoParser : Kafka commitId : fdcf75ea326b8e07
2018-08-25 16:20:58.513 WARN 17440 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node -1 could not be established. Broker may not be available.
2018-08-25 16:20:59.567 WARN 17440 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node -1 could not be established. Broker may not be available.
如何正确重新配置 Docker Kafka 以便能够使用 KAFKA_ADVERTISED_LISTENERS 和 KAFKA_LISTENERS?
【问题讨论】:
-
你在哪里使用 XML 来分配东西?
-
我使用 io.fabric8 docker-maven-plugin
-
啊,
local.ip被 Maven 分配为什么?因为我知道,例如,如果您将容器主机名设置为 kafka,并使用PLAINTEXT://kafka:9092,那么它至少会在您转发端口后进行外部连接 -
看看我的回答是否有帮助stackoverflow.com/a/51634499/2308683
标签: docker apache-kafka