Kafka Consumer:找不到连接条目

时间:2019-01-30 15:08:25

标签: apache-kafka kafka-consumer-api

我正在尝试通过使用远程Kafka集群上某个主题的数据来检查kafka使用者。使用kafka-console-consumer.sh时出现以下错误:

 ERROR Error processing message, terminating consumer process:  (kafka.tools.ConsoleConsumer$)
java.lang.IllegalStateException: No entry found for connection 2147475658
    at org.apache.kafka.clients.ClusterConnectionStates.nodeState(ClusterConnectionStates.java:330)
    at org.apache.kafka.clients.ClusterConnectionStates.disconnected(ClusterConnectionStates.java:134)
    at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:885)
    at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:276)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.tryConnect(ConsumerNetworkClient.java:548)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$FindCoordinatorResponseHandler.onSuccess(AbstractCoordinator.java:655)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator$FindCoordinatorResponseHandler.onSuccess(AbstractCoordinator.java:635)
    at org.apache.kafka.clients.consumer.internals.RequestFuture$1.onSuccess(RequestFuture.java:204)
    at org.apache.kafka.clients.consumer.internals.RequestFuture.fireSuccess(RequestFuture.java:167)
    at org.apache.kafka.clients.consumer.internals.RequestFuture.complete(RequestFuture.java:127)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient$RequestFutureCompletionHandler.fireCompletion(ConsumerNetworkClient.java:575)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.firePendingCompletedRequests(ConsumerNetworkClient.java:389)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:297)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:236)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:215)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:231)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:316)
    at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1214)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1179)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1164)
    at kafka.tools.ConsoleConsumer$ConsumerWrapper.receive(ConsoleConsumer.scala:436)
    at kafka.tools.ConsoleConsumer$.process(ConsoleConsumer.scala:104)
    at kafka.tools.ConsoleConsumer$.run(ConsoleConsumer.scala:76)
    at kafka.tools.ConsoleConsumer$.main(ConsoleConsumer.scala:54)
    at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala)
Processed a total of 0 messages

这是我使用的命令:

./bin/kafka-console-consumer.sh --bootstrap-server SSL://{IP}:{PORT},SSL://{IP}:{PORT},SSL://{IP}:{PORT} --consumer.config ./config/consumer.properties --topic MYTOPIC --group MYGROUP

这是./config/consumer.properties文件:

bootstrap.servers=SSL://{IP}:{PORT},SSL://{IP}:{PORT},SSL://{IP}:{PORT}

# consumer group id
group.id=MYGROUP

# What to do when there is no initial offset in Kafka or if the current
# offset does not exist any more on the server: latest, earliest, none
auto.offset.reset=earliest

#### Security
security.protocol=SSL
ssl.key.password=test1234
ssl.keystore.location=/opt/kafka/config/certs/keystore.jks
ssl.keystore.password=test1234
ssl.truststore.location=/opt/kafka/config/certs/truststore.jks
ssl.truststore.password=test1234

您知道问题是什么吗?

7 个答案:

答案 0 :(得分:11)

我发现了问题。最后是一个DNS问题。我通过IP地址联系了Kafka代理,但是代理使用DNS名称进行了回复。在使用者端设置DNS名称后,它又开始工作。

答案 1 :(得分:4)

在将Kafka和Zookeeper作为Docker容器运行时,我(与消费者和生产者)遇到了这个问题。

解决方案是在Kafka代理的advertised.listeners文件中设置config/server.properties,以使其包含容器的IP地址,例如

advertised.listeners=PLAINTEXT://172.15.0.8:9092

有关正确设置属性文件后用于在容器内启动Kafka的脚本示例,请参见https://github.com/maxant/kafkaplayground/blob/master/start-kafka.sh

答案 2 :(得分:3)

似乎在server.properties中未配置Kafka集群侦听器属性。

在远程kafka群集中,该属性不应带有正确的主机名。

listeners=PLAINTEXT://0.0.0.0:9092

答案 3 :(得分:0)

您确定远程kafka正在运行。我建议运行import tkinter as tk class App(tk.Tk): def __init__(self): super().__init__() tk.Label(self, text='1st TK frame!').pack() tk.Button(self, text='close frame 1 and open frame 2', command=self.destroy).pack() if __name__ == '__main__': App().mainloop() class App(tk.Tk): def __init__(self): super().__init__() tk.Label(self, text='2st TK frame!').pack() tk.Button(self, text='close frame 2', command=self.destroy).pack() if __name__ == '__main__': App().mainloop() 以验证端口是否打开(除非配置不同,端口应为9092)。如果可以,那么您可以使用kafkacat,这使事情变得更容易。创建运行nmap -p PORT HOST的使用者或运行kafkacat -b HOST:PORT -t YOUR_TOPIC -C -o beginning -t的生产者-t YOUR_TOPIC -P

答案 4 :(得分:0)

如果RestClient版本与ElasticSearch版本不同,您可能会看到找不到条目的消息

答案 5 :(得分:0)

就我而言,我在尝试连接到我的Kafka容器时收到以下消息:

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092

希望它对某人有帮助

答案 6 :(得分:0)

就我而言,它找不到错误提到的经纪人ID(2147475658)。

No entry found for connection 2147475658

您可以通过在server.properties文件中设置broker.id属性来创建ID为2147475658的代理。为所有代理创建单独的server.properties文件。

或者如果您至少有一个活着的经纪人,则可以删除/删除出现错误的经纪人。

文档链接:https://kafka.apache.org/documentation/#quickstart_multibroker