重新发送消息帧而不复制

时间:2013-05-03 21:16:56

标签: zeromq

问题:

我可以使用另一条消息的部分初始化新邮件而无需复制吗?修改消息以删除前几帧也是有效的。

情景:

我正在使用ROUTER-REQ模式进行负载平衡实现。 REQ端向ROUTER发送消息,该消息将身份和分隔符帧添加到消息中。在我的应用程序使用第一帧将工作者的身份推送到空闲列表后,它需要将消息的最后一帧转发到PUB套接字。那些最终帧可能非常大,并且在提取出第一个身份帧之后,我不再需要接收到的消息的其余部分,只是将其转发。这似乎是零拷贝的好地方;我只需要丢弃由ROUTER插入的前两帧。

1 个答案:

答案 0 :(得分:1)

我没有尝试,但我认为你可以,我会尝试用

使用zmq_msg_copy,根据man page

  

实现可以选择不物理复制邮件   内容,而不是共享src和dest之间的底层缓冲区。

我不知道为什么手册页使用“可以选择”,查看code我认为它一直在做。

这里,当我谈论消息时,我的意思是“消息部分”。因此,当您创建多部分消息时,只需将必要部分(框架)零复制

您使用哪种绑定?