【问题标题】:Unable to connect to TCP socket of Kafka server无法连接到 Kafka 服务器的 TCP 套接字
【发布时间】:2020-09-09 11:51:13
【问题描述】:

我启动了简单的 kafka 服务器。见quick start section

我无法连接到上述服务器。 这是我的代码:

Deno.listen({ port: 9092, transport: 'tcp' });
// or
Deno.listen({ port: 9092, hostname: 'localhost', transport: 'tcp' });
//or
Deno.listen({ port: 9092, hostname: '127.0.0.1' });

这是错误:

error: Uncaught PermissionDenied: An attempt was made to access a socket in a way forbidden by its access permissions. (os error 10013)
    at unwrapResponse ($deno$/ops/dispatch_json.ts:43:11)
    at Object.sendSync ($deno$/ops/dispatch_json.ts:72:10)
    at Object.listen ($deno$/ops/net.ts:51:10)
    at Object.listen ($deno$/net.ts:152:22)
    at Object.listen ($deno$/net_unstable.ts:36:12)
    at file:///D:/rust/deno/index.ts:10:6

我尝试过的命令

deno run --allow-net --allow-write ./index.ts
deno run --allow-net --unstable ./index.ts
deno run --allow-net  ./index.ts

我可以在 Rust 的帮助下毫无问题地连接到上述服务器。 这是我的 Rust 代码:

fn connect() -> Result<(), std::io::Error> {
    let stream = TcpStream::connect("localhost:9092").expect("Could not connect");
}

我是 Deno 的新手。 我做错了什么?

【问题讨论】:

    标签: typescript apache-kafka tcp deno


    【解决方案1】:

    使用Deno.listen,您正在端口9002 上创建服务器,而不是连接到Kafka 服务器。你应该改用Deno.connect

    const conn = await Deno.connect({ hostname: "localhost", port: 9092 });
    console.log("Connected", conn);
    
    const decoder = new TextDecoder();
    const encoder = new TextEncoder();
    await conn.write(encoder.encode("message"));
    
    // Read response
    const buf = new Uint8Array(1024);
    await conn.read(buf);
    console.log('Client - Response:', decoder.decode(buf))
    
    
    conn.close();
    

    【讨论】:

    • 这究竟是如何工作的? Kafka 有自己的 TCP 协议,不公开接受原始文本数据
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2012-06-13
    • 2015-09-29
    • 2011-04-09
    • 2018-11-29
    相关资源
    最近更新 更多