【发布时间】:2015-10-24 19:52:01
【问题描述】:
我想使用 Docker 在我的本地机器(Windows 7)上设置 kafka 单一代理。本质上,我使用了此链接中列出的步骤:
然后,我可以通过运行以下命令来创建主题:
kafka-topics.bat --create --zookeeper 192.168.59.103:32769 --replica 1 --partition 1 --topic test
这很好地创建了主题,就像我做列表主题时一样,它显示正确。
接下来,我尝试使用 kafka-console-producer.bat 文件发布消息,当我这样做并在输入消息后按 Enter 时,出现以下异常:
[2015-08-02 13:48:46,075] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,084] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,085] ERROR Failed to collate messages by topic, partition d
ue to: Failed to fetch topic metadata for topic: test (kafka.producer.async.Defa
ultEventHandler)
[2015-08-02 13:48:46,195] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,205] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,206] ERROR Failed to collate messages by topic, partition d
ue to: Failed to fetch topic metadata for topic: test (kafka.producer.async.Defa
ultEventHandler)
[2015-08-02 13:48:46,315] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,325] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,325] ERROR Failed to collate messages by topic, partition d
ue to: Failed to fetch topic metadata for topic: test (kafka.producer.async.Defa
ultEventHandler)
[2015-08-02 13:48:46,434] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,442] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,443] ERROR Failed to collate messages by topic, partition d
ue to: Failed to fetch topic metadata for topic: test (kafka.producer.async.Defa
ultEventHandler)
[2015-08-02 13:48:46,548] WARN Error while fetching metadata [{TopicMetadata for
topic test ->
No partition metadata for topic test due to kafka.common.LeaderNotAvailableExcep
tion}] for topic [test]: class kafka.common.LeaderNotAvailableException (kafka.
producer.BrokerPartitionInfo)
[2015-08-02 13:48:46,549] ERROR Failed to send requests for topics test with cor
relation ids in [9,17] (kafka.producer.async.DefaultEventHandler)
[2015-08-02 13:48:46,549] ERROR Error in handling batch of 1 events (kafka.produ
cer.async.ProducerSendThread)
kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries
.
at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.s
cala:90)
at kafka.producer.async.ProducerSendThread.tryToHandle(ProducerSendThrea
d.scala:105)
at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.appl
y(ProducerSendThread.scala:88)
at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.appl
y(ProducerSendThread.scala:68)
at scala.collection.immutable.Stream.foreach(Stream.scala:547)
at kafka.producer.async.ProducerSendThread.processEvents(ProducerSendThr
ead.scala:67)
at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:
45)
当我使用
启动 kafka 时,这个异常对我来说似乎很奇怪docker run --name kafka -e HOST_IP=localhost -e KAFKA_ADVERTISED_HOST_NAME=192.168.59.103 -e KAFKA_ADVERTISED_PORT=9092 -e KAFKA_BROKER_ID=1 -e ZK=zk -p 9092 --link zookeeper:zk -t wurstmeister/kafka
终端中显示的最后一行是:
[2015-08-02 17:20:44,037] INFO Registered broker 1 at path /brokers/ids/1 with a
ddress 192.168.59.103:9092. (kafka.utils.ZkUtils$)
[2015-08-02 17:20:44,055] INFO [Kafka Server 1], started (kafka.server.KafkaServ
er)
[2015-08-02 17:20:44,108] INFO New leader is 1 (kafka.server.ZookeeperLeaderElec
tor$LeaderChangeListener)
所以,我猜领导已经被分配了。最后,在消费者方面,当我运行 bat 文件时,会抛出以下内容:
[2015-08-02 13:41:47,005] WARN Fetching topic metadata with correlation id 0 for
topics [Set(test)] from broker [id:1,host:192.168.59.103,port:9092] failed (kaf
ka.client.ClientUtils$)
java.nio.channels.ClosedChannelException
at kafka.network.BlockingChannel.send(BlockingChannel.scala:100)
at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73)
at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncP
roducer.scala:72)
at kafka.producer.SyncProducer.send(SyncProducer.scala:113)
at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:58)
at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:93)
at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(Consu
merFetcherManager.scala:66)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)
那么,我在这里做错了什么?我总是需要 compose 来运行 kafka 吗?我的理解是,如果我想运行多个代理,则需要 compose,这不是我正在做的事情。在我的情况下,链接这 2 个容器还不够吗?
【问题讨论】:
标签: windows docker apache-zookeeper apache-kafka