【问题标题】:Host resolution error while using node-rdkafka使用 node-rdkafka 时主机解析错误
【发布时间】:2021-03-26 12:21:32
【问题描述】:

我将 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

【问题讨论】:

  • 欢迎来到stackoverflow。如果您可以发布代码以便其他用户可以复制您的错误,您将获得更好的答案。
  • 添加了示例消费者代码的 URL
  • 请在帖子中包含。 minimal reproducible example
  • 请提供您的代码以及网络的详细信息 - 您是否在同一台机器上运行您的代码和 Kafka? EC2?码头工人?等

标签: node.js apache-kafka


【解决方案1】:

此问题是由于您的客户和经纪人的不同网络造成的。

简单的hack是让advertised.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/

【讨论】:

    【解决方案2】:

    我在使用来自https://kafka.apache.org/quickstart 的快速启动说明在本地运行 kafka 时遇到了这个确切的问题

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

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

    【讨论】:

      猜你喜欢
      • 2022-09-30
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多