首页 > 解决方案 > nodejs 无法连接到 kafka 代理

问题描述

我正在尝试连接到在 ubuntu for windows 上运行的 Kafka 3.0.0 客户端,但出现以下错误:“消息”:“[连接] 连接错误:连接 ECONNREFUSED 127.0.0.1:9092”。

这应该意味着节点找不到在端口 9092 上运行的任何服务,但是当我检查所有活动的 tcp 端口时,它说 kafka 正在侦听 9092:

活动 Internet 连接(服务器和已建立)

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp6       0      0 :::9092                 :::*                    LISTEN
tcp6       0      0 :::2181                 :::*                    LISTEN
tcp6       0      0 127.0.0.1:46550         127.0.1.1:9092          ESTABLISHED
tcp6       0      0 127.0.1.1:9092          127.0.0.1:46550         ESTABLISHED
tcp6       0      0 127.0.0.1:2181          127.0.0.1:54466         ESTABLISHED
tcp6       0      0 127.0.0.1:54466         127.0.0.1:2181          ESTABLISHED

我不知道为什么会这样,所有 server.properties 设置都是默认设置,zookeeper 正在运行,我可以创建主题,但节点仍然无法连接。

--编辑 -- 这是我的服务器端代码:

const {Kafka} = require('kafkajs');

    const run = async () => {
        try {
            const kafka = new Kafka({
                clientId: "myapp",
                brokers: ["127.0.0.1:9092"]
            })  
            const name = process.argv[2];
            const producer = kafka.producer();
            await producer.connect();
            console.log("connected")
    
            await producer.send({
                topics: "hashtags",
                messages: [
                    {
                        value: name
                    }
                ]
            })
            console.log("done")
            await producer.disconnect();
        } catch (error) {
            console.log(error)
        } 
    }
    
run();

这是server.config文件的相关内容:

我将 listeners=PLAINTEXT://:9092 更新为 listeners=PLAINTEXT://127.0.0.1:9092

#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://127.0.0.1:9092

现在,重启zookeeper和kafka后,活动的tcp端口是:

tcp6       0      0 :::45815                :::*                    LISTEN
tcp6       0      0 127.0.0.1:9092          :::*                    LISTEN
tcp6       0      0 :::2181                 :::*                    LISTEN
tcp6       0      0 :::44587                :::*                    LISTEN
tcp6       0      0 127.0.0.1:46734         127.0.0.1:9092          ESTABLISHED
tcp6       0      0 127.0.0.1:9092          127.0.0.1:46734         ESTABLISHED
tcp6       0      0 127.0.0.1:54492         127.0.0.1:2181          ESTABLISHED
tcp6       0      0 127.0.0.1:2181          127.0.0.1:54492         ESTABLISHED

错误仍然存​​在。

任何帮助将不胜感激!

标签: node.jsapache-kafka

解决方案


我在 Mac 上也遇到过这个问题。

上下文:我已经设置了两个 docker 映像,一个用于 zookeeper,一个用于 Kafka。

我使用我的实际 IPv4 地址修复了它。

从 ["127.0.0.1:9092"] 更新了我的经纪人,现在我有了类似 ["192.168.2.2:9092"] 的东西。


推荐阅读