Scala Kafka主题创建:等待节点分配时超时
我用下面的docker-compose.yml运行了一个本地卡夫卡Scala Kafka主题创建:等待节点分配时超时,scala,docker,apache-kafka,Scala,Docker,Apache Kafka,我用下面的docker-compose.yml运行了一个本地卡夫卡 version: '2' services: zookeeper: image: "confluentinc/cp-zookeeper:5.0.1" environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 kafka: image: "confluentinc/cp-enterprise-kaf
version: '2'
services:
zookeeper:
image: "confluentinc/cp-zookeeper:5.0.1"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: "confluentinc/cp-enterprise-kafka:5.0.1"
ports:
- '9092:9092'
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_METRIC_REPORTERS: io.confluent.metrics.reporter.ConfluentMetricsReporter
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 100
尝试在Scala中使用kafka client 2.1.0运行基本创建主题:
val props = new Properties()
props.setProperty(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092")
val adminClient: AdminClient = AdminClient.create(props)
val newTopic = new NewTopic("test", 1, 1.toShort)
val topicsF = adminClient.createTopics(List(newTopic).asJavaCollection)
val result = topicsF.all().get()
但过了一段时间,我发现:
org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
我可以使用命令行创建主题:
kafka-topics --create \
--zookeeper localhost:2181 \
--replication-factor 1 \
--partitions 1 \
--topic test
Created topic "test".
使用Java描述了一个类似的问题,但注释表明系统重启修复了问题,而我这边的情况并非如此。我认为问题出在
localhost
上。在引导服务器中
属性使用您在撰写文件中定义的播发主机(192.168.99.100),而不是本地主机
,这应该可以工作。如果您在Docker(或类似)中运行Kafka,则需要正确配置侦听器。详细描述了它
您可以使用Docker Compose从主机访问卡夫卡
免责声明:我写了一篇文章:)你能看看容器内部吗,在server.properties中定义的广告主机是什么?然后,您可以尝试从外部对9092进行telnet连接,并查看它是否能够连接。在server.properties:Adverted.listeners=PLAINTEXT://192.168.99.100:9092中的容器内部。>telnet 192.168.99.100:9092 192.168.99.100:9092:提供了nodename或servname,或不知道我已使用docker-compose.yml文件更新了我的问题。对于我来说,在kafka server.properties中将“listeners=PLAINTEXT://:9092”更改为“listeners=PLAINTEXT://:localhost:9092”是可行的。谢谢我已经用docker-compose.yml文件更新了我的问题。使用此设置,它仍然无法工作。您在哪里运行Scala代码?在Docker主机或其他容器上?我启动所描述的Docker-compose.yml并从MacOS本地运行代码,因为我只想快速开发,而不需要构建sbt容器并部署它。我不熟悉您使用的Docker映像。我已经更新了我的答案,添加了一些额外的内容material@lloiacono修正:供将来参考:对于那些看到这个问题并想知道为什么问题和答案中的环境看起来相同的人-@Milan在答案后编辑了这个问题,请参阅问题历史记录