apache-kafka - Kafka 消费者获取主题元数据失败

标签 apache-kafka kafka-consumer-api

我正在尝试为第三方的 Kafka 和 ZooKeeper 服务器编写 Java 客户端。我能够列出和描述主题,但当我尝试阅读任何主题时,会引发 ClosedChannelException 。我在这里使用命令行客户端重现它们。

$ bin/kafka-console-consumer.sh --zookeeper 255.255.255.255:2181 --topic eventbustopic
[2015-06-02 16:23:04,375] WARN Fetching topic metadata with correlation id 0 for topics [Set(eventbustopic)] from broker [id:1,host:SOME_HOST,port:9092] failed (kafka.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(SyncProducer.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(ConsumerFetcherManager.scala:66)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)         
[2015-06-02 16:23:04,515] WARN Fetching topic metadata with correlation id 0 for topics [Set(eventbustopic)] from broker [id:0,host:SOME_HOST,port:9092] failed (kafka.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(SyncProducer.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(ConsumerFetcherManager.scala:66)
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:60)         

备用命令成功:

$ bin/kafka-topics.sh --describe --zookeeper 255.255.255.255:2181 --topic eventbustopic
Topic:eventbustopic   PartitionCount:2        ReplicationFactor:1     Configs:
    Topic: eventbustopic  Partition: 0    Leader: 1       Replicas: 1     Isr: 1
    Topic: eventbustopic  Partition: 1    Leader: 0       Replicas: 0     Isr: 0

$ bin/kafka-topics.sh --list --zookeeper 255.255.255.255:2181 --topic eventbustopic
eventbustopic

(ips已被编辑并替换为255.255.255.255)

当我用 google 搜索此异常时,我发现生产者方面存在问题 - 事实上,ClientUtils.fetchTopicMetadata 的来源表明这主要由生产者使用。

我担心的一个问题是,这可能是网络布局的产物:数据包被 Haproxy 破坏并通过 VPN 发送。

这里到底是什么在起作用?

最佳答案

代理告诉客户端应该使用哪个主机名来生成/使用消息。默认情况下,Kafka 使用其运行系统的主机名。如果客户端无法解析此主机名,则会出现此异常。

您可以尝试将 Kafka 配置中的 advertized.host.name 设置为客户端应使用的主机名/地址。

关于apache-kafka - Kafka 消费者获取主题元数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30606447/

相关文章:

windows - Kafka : unable to start Kafka - process can not access file 00000000000000000000. 时间索引

apache-kafka - 关闭代理是否会自动将该代理上的副本移动到新代理?

apache-kafka - 是否可以将偏移量重置为 kafka 连接器中的 kafka 消费者组的主题?

apache-kafka - Kafka自动提交间隔最佳实践

apache-kafka - Kafka 消费者路径不得以/字符结尾

java - ConcurrentKafkaListenerContainerFactory 的 Spring-Kafka 消费者组协调

apache-kafka - 如何修复 : java. lang.OutOfMemoryError:flink kafka 消费者中的直接缓冲内存

apache-kafka - 从 Kafka 获取最新值(value)

apache-spark - 来自 Kafka Consumer 的 Spark Streaming

apache-kafka - 获取元数据 kafka {test=LEADER_NOT_AVAILABLE} 时出错?