【问题标题】:How to properly communicate to a Kafka Broker through a socket?如何通过套接字正确地与 Kafka Broker 通信?
【发布时间】:2020-12-08 07:50:59
【问题描述】:

最近我一直在尝试用 JavaScript 为 Kafka 创建一个客户端库(类似于 KafkaJS)。

我研究了 KafkaJS 是如何做到的,并通过打开一个套接字并编写 Kafka 协议成功地从一个主题中获取了一条消息。

我面临的问题是,在我向代理发送第一个请求(Fetch)并收到答复后,代理发送一个 FIN 数据包并结束套接字。

我认为这种行为不正常,我在官方文档和KafkaJS代码中搜索,我找不到任何东西。

const socket = new net.Socket();
socket.connect(9092, 'localhost');
socket.setKeepAlive(true, 60000);

socket.write(payload.buffer, 'binary');

//rest of the events (end, data, error) are here.

【问题讨论】:

    标签: javascript sockets apache-kafka


    【解决方案1】:

    Kafka 有自己的 TCP 协议,它在几个 Nodejs 库中实现。最好使用这些而不是自己实现它,但是如果需要,第一个操作是发送引导请求,而不是有效负载,然后将生产者记录分批发送到某些代理的特定主题分区(即使只有一个经纪人)。

    不确定您的 FIN 问题,但如果这是服务器返回的内容,那么其他客户端会以某种方式处理它

    另外,KafkaJS 是一个服务器端库。理想情况下,您不会让客户端(浏览器)直接与 Kafka 通信

    【讨论】:

    • 好吧,我的问题是 fin 问题,我认为这很不自然,因为为每个请求重新打开套接字没有任何意义。
    猜你喜欢
    • 2019-11-07
    • 2017-07-08
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多