首页 > 解决方案 > ZeroMQ:到 DEALER 套接字代理的 STREAM 套接字

问题描述

我有以下设置:

zmq::proxy( acceptor, clients, nullptr );

acceptor是一个zmq::socket_type::stream
clients是一个zmq::socket::type::dealer

我发现当另一端发送一个大请求 ( ~ 16 [kB]) 时,请求被分解并分段分发给我的经销商线程。一位经销商掌握了信息的主要内容,其他经销商则获得了中间部分。我没有设置任何特殊选项,所以这似乎是默认的 zeromq 行为。

我正在使用 ZeroMQ 4.2.2。

有没有办法覆盖这种行为并保证将完整的消息传递到我的经销商线程?

标签: zeromq

解决方案


@namdam 值得 [+1] 发布版本详细信息

是否有任何方法可以覆盖它...

是的,请遵循 API 记录的规则

使用传输时,类型的套接字ZMQ_STREAM用于从非 ØMQ 对等方发送和接收 TCP 数据tcp://。套接字可以ZMQ_STREAM充当客户端和/或服务器,异步发送和/或接收 TCP 数据。

兼容的对等套接字。. . . . 没有

因此,无论哪种方式,组合代理来处理兼容的套接字原型(不尝试硬连线ZMQ_STREAM到任何其他 ZeroMQ 原生套接字原型),即完全避免使用ZMQ_STREAM,或者创建一个读取网关,解码和调解ZMQ_STREAM一个上的兼容行为侧和与网关逻辑另一侧的其他 ZeroMQ 原生套接字架构类型的接口。

如果有疑问,
您可能会喜欢阅读[ ZeroMQ 层次结构在不到 5 秒内]部分中简要概述的主要概念差异


推荐阅读