使用node-rdkafka时主机解析错误

时间:2018-12-06 22:53:47

标签: node.js apache-kafka

我正在将node-rdkafka作为Node.js应用程序运行。使用者无限期地挂起,而没有从kafka提取任何消息(在localhost上运行)。

发出以下错误,

{ Error: Local: Host resolution failure
  origin: 'local',
  message: 'host resolution failure',
  code: -1,
  errno: -1,
  stack: 'Error: Local: Host resolution failure' }

该应用程序可以从kafka接收数据。 kafka实例很好,可以通过使用控制台生成和使用消息来进行验证。

非常感谢您提供调试原因的帮助。

此处是消费者代码示例-https://github.com/Blizzard/node-rdkafka/blob/master/examples/consumer-flow.md

2 个答案:

答案 0 :(得分:0)

使用https://kafka.apache.org/quickstart中的快速入门说明在本地运行kafka时,我遇到了这个确切的问题

对我来说,在启动kafka-server之前,将以下两行添加到config/server.properties已解决了该问题-

listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092

答案 1 :(得分:0)

发生此问题的原因是您的客户和经纪人的网络不同。

简单的hack是让adverted.listeners的主机入口

例如, advertised.listeners=PLAINTEXT://kafka:9092

然后使用您的 kafka-broker-IP 在 /etc/hosts 中添加一个条目。例如kafka-borker-IP 是 192.168.1.1

192.168.1.1 kafka

您可以使用 kafkacat 实用程序来检查您的经纪人的 IP。

kafkacat -b kafka:9092 -L

它将返回有关经纪人的元数据。

您需要检查您的机器是否可以访问返回的代理的 IP。

为了更好地理解这个问题。 您可以参考https://www.confluent.io/blog/kafka-listeners-explained/