Sockets 将ZeroMQ事件流式传输回客户端

Sockets 将ZeroMQ事件流式传输回客户端,sockets,zeromq,Sockets,Zeromq,我有一个用例,我希望有一个ZeroMQ请求/应答套接字“流式”返回结果,这是否可能与多部分消息(即,应答套接字在HasMore=false之前将帧流式返回)有关,或者我的做法是否错误 情况: 1) 客户机对某些记录进行查询(请求) 2) 服务器查找数据库中的结果,并将当前的大量记录(回复)拆分为多个帧进行响应 3) 在发送最终帧之前,服务器必须等待服务器端事件生成(HasMore=false) 4) 在生成最终事件且HasMore=false之前,客户端不会获取之前的帧 谢谢你的帮助。据我所知,

我有一个用例,我希望有一个ZeroMQ请求/应答套接字“流式”返回结果,这是否可能与多部分消息(即,应答套接字在HasMore=false之前将帧流式返回)有关,或者我的做法是否错误

情况:

1) 客户机对某些记录进行查询(请求)

2) 服务器查找数据库中的结果,并将当前的大量记录(回复)拆分为多个帧进行响应

3) 在发送最终帧之前,服务器必须等待服务器端事件生成(HasMore=false)

4) 在生成最终事件且HasMore=false之前,客户端不会获取之前的帧


谢谢你的帮助。

据我所知,你的目标是什么,听起来你所拥有的东西会按你所期望的方式工作。要点:

  • 正如您所说,所有帧将一次性发送到客户端,它们将存储在服务器上,直到
    HasMore
    设置为
    false
  • 这里需要记住的一件重要事情是,如果数据量确实很大,则必须能够将整个数据集放入内存中,因为它将存储在服务器内存中,直到包含所有帧的整个消息完成,然后在客户端处理之前将其接收到内存中
我假设您主要寻找的是一种在发送消息之前迭代构建消息的方法?也许还能够迭代地处理客户机上的数据?此外,你得到保证,你不会丢失部分数据在中间,你要么得到整个消息或丢失整个消息(而不是相反,发送每个帧作为一个单独的消息)。这是框架的主要用例之一,所以您做得很好

我唯一反对的是使用“stream”一词,因为这意味着数据在服务器上处理时会不断地发送到客户端,而这显然不是您想要做的(ZMQ消息帧也不可能做到)