javascript - 如何通过套接字正确地与 Kafka Broker 通信?

标签 javascript sockets apache-kafka

最近我一直在尝试用 JavaScript 为 Kafka 创建一个客户端库(类似于 KafkaJS)。
我研究了 KafkaJS 是如何做到的,并通过打开一个套接字并编写 Kafka 协议(protocol)成功地从一个主题中获取了一条消息。
我面临的问题是,在我向代理发送第一个请求(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.

最佳答案

Kafka 有自己的 TCP 协议(protocol),它在几个 Nodejs 库中实现。最好使用这些而不是自己实现它,但是如果需要,第一个操作是发送引导请求,而不是有效负载,然后将生产者记录分批发送到某些代理的特定主题分区(即使只有一个经纪人)。
不确定您的 FIN 问题,但如果这是服务器返回的内容,那么其他客户端会以某种方式处理它
此外,KafkaJS 是一个服务器端库。理想情况下,您不会让客户端(浏览器)直接与 Kafka 通信

关于javascript - 如何通过套接字正确地与 Kafka Broker 通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65195041/

相关文章:

c# - 我可以使用 C# 编写带 Socket 的蓝牙 PC 客户端吗?

javascript - 何时在 AngularJS 中使用 Worker 和 Factory 函数

javascript - table.column 不是 jquery datatabbe 中的函数

c# - 在system.net.socket中将HTTP header 发送到客户端的实际方法

scala - 使用spark将数据写入cassandra

apache-spark - 消息在 Kafka + Spark Streaming 中丢失

python - 在 python 中使用来自不同容器的 Kafka 消息

Javascript:选择元素的下一个兄弟并通过单击更改其类(不使用 ID)

javascript - 如果未使用新运算符,则返回一个新对象

python多线程服务器无法从客户端接收数据