zmq 套接字-描述
请求-回复模式
请求-应答模式用于从发送请求的客户端的一个或多个实例中的服务,并接收后续答复每个请求发送。
ZMQ_REQ
客户端使用ZMQ_REQ类型的套接字向服务发送请求并从服务接收答复。此套接字类型仅允许zmq_send(request)和后续zmq_recv(reply)调用的交替序列。发送的每个请求都在所有服务中轮循,并且收到的每个答复都与最后发出的请求匹配。
当ZMQ_REQ套接字由于已达到所有服务的最高水位而进入异常状态时,或者如果根本没有任何服务,则套接字上的任何zmq_send(3)操作均应阻塞,直到异常状态结束或至少一个异常状态为止服务变为可发送;消息不会被丢弃。
ZMQ_REQ特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_REP |
方向 | 双向的 |
发送/接收模式 | 发送,接收,发送,接收... |
外发路由策略 | 轮循 |
入网路由策略 | 最后一位 |
ZMQ_HWM选项操作 | 块 |
ZMQ_REP
服务使用ZMQ_REP类型的套接字来接收来自客户端的请求并向客户端发送回复。此套接字类型仅允许zmq_recv(request)和后续zmq_send(reply)调用的交替序列。接收到的每个请求都从所有客户端中公平排队,并且发送的每个回复都路由到发出最后一个请求的客户端。如果原始请求者不再存在,则答复将被静默丢弃。
当ZMQ_REP套接字由于达到客户端的高水位线而进入异常状态时,发送给有问题的客户端的所有答复都将被丢弃,直到异常状态结束为止。
ZMQ_REP特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_REQ |
方向 | 双向的 |
发送/接收模式 | 接收,发送,接收,发送... |
入网路由策略 | 公平排队 |
外发路由策略 | 最后一位 |
ZMQ_HWM选项操作 | 下降 |
ZMQ_DEALER
ZMQ_DEALER类型的套接字是用于扩展请求/应答套接字的高级模式。发送的每个消息都在所有连接的对等方之间进行轮询,并且收到的每个消息都从所有连接的对等方进行公平排队。
以前,此套接字称为ZMQ_XREQ,并且该名称仍可用于向后兼容。
当ZMQ_DEALER套接字由于达到所有同位体的最高水位而进入异常状态时,或者如果根本没有任何同位体,则套接字上的任何zmq_send(3)操作都应阻塞,直到异常状态结束或至少一个异常状态为止对等方可以发送;消息不会被丢弃。
当将ZMQ_DEALER套接字连接到ZMQ_REP套接字时,发送的每个消息都必须包含一个空的消息部分,定界符以及一个或多个主体部分。
ZMQ_DEALER特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_ROUTER,ZMQ_REQ,ZMQ_REP |
方向 | 双向的 |
发送/接收模式 | 无限制 |
外发路由策略 | 轮循 |
入网路由策略 | 公平排队 |
ZMQ_HWM选项操作 | 块 |
ZMQ_ROUTER
ZMQ_ROUTER类型的套接字是用于扩展请求/应答套接字的高级模式。当收到消息时,ZMQ_ROUTER套接字在将消息传递给应用程序之前,应在消息部分之前包含消息的原始对等方的身份。接收到的消息在所有连接的同级之间公平排队。发送消息时,ZMQ_ROUTER套接字应删除消息的第一部分,并使用它来确定消息应路由到的对等方的身份。如果对等体不再存在,则该消息将被静默丢弃。
以前,此套接字称为ZMQ_XREP,该名称仍可用于向后兼容。
当ZMQ_ROUTER套接字由于达到所有对等方的最高水位而进入异常状态时,或者如果根本没有任何对等体,则发送到套接字的任何消息都将被丢弃,直到异常状态结束。同样,任何路由到不存在的对等方或已达到单个高水位标记的对等方的消息也应被丢弃。
当ZMQ_REQ套接字连接到ZMQ_ROUTER套接字时,除了源对等方的标识之外,每个收到的消息还应包含一个空的定界符消息部分。因此,由应用程序看到的每个接收到的消息的整个结构变为:一个或多个标识部分,定界符部分,一个或多个主体部分。将回复发送到ZMQ_REQ套接字时,应用程序必须包括定界符部分。
ZMQ_ROUTER特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_DEALER,ZMQ_REQ,ZMQ_REP |
方向 | 双向的 |
发送/接收模式 | 无限制 |
外发路由策略 | 看到文字 |
入网路由策略 | 公平排队 |
ZMQ_HWM选项操作 | 下降 |
发布-订阅模式
发布-订阅模式用于以扇出方式将数据从单个发布者一对多分发到多个订阅者。
ZMQ_PUB
发布者使用类型为ZMQ_PUB的套接字来分发数据。发送的消息以扇出方式分发给所有连接的对等方。所述zmq_recv(3)函数不是此套接字类型实现。
当ZMQ_PUB套接字由于已达到订户的最高水位而进入例外状态时,将发送给有问题的订户的任何消息都将被丢弃,直到例外状态结束。对于该套接字类型,zmq_send()函数不得阻塞。
ZMQ_PUB特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_SUB |
方向 | 单向 |
发送/接收模式 | 仅发送 |
入网路由策略 | 不适用 |
外发路由策略 | 扇出 |
ZMQ_HWM选项操作 | 下降 |
ZMQ_SUB
订阅者使用ZMQ_SUB类型的套接字来订阅发布者分发的数据。最初,ZMQ_SUB套接字未订阅任何消息,请使用zmq_setsockopt(3)的ZMQ_SUBSCRIBE选项指定要订阅的消息。该zmq_send()函数没有此套接字类型实现。
ZMQ_SUB特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_PUB |
方向 | 单向 |
发送/接收模式 | 仅接收 |
入网路由策略 | 公平排队 |
外发路由策略 | 不适用 |
ZMQ_HWM选项操作 | 下降 |
流水线模式
流水线模式用于将数据分发到布置在流水线中的节点。数据始终沿流水线向下流动,流水线的每一级都连接到至少一个节点。当流水线级连接到多个节点时,将在所有连接的节点之间循环数据。
ZMQ_PUSH
流水线节点使用ZMQ_PUSH类型的套接字将消息发送到下游流水线节点。消息循环到所有连接的下游节点。该zmq_recv()函数没有此套接字类型实现。
当ZMQ_PUSH套接字由于已达到所有下游节点的高水位线而进入异常状态时,或者如果根本没有下游节点,则套接字上的任何zmq_send(3)操作都应阻塞,直到异常状态结束或在异常状态结束时为止。至少一个下游节点可用于发送;消息不会被丢弃。
弃用的别名:ZMQ_DOWNSTREAM。
ZMQ_PUSH特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_PULL |
方向 | 单向 |
发送/接收模式 | 仅发送 |
入网路由策略 | 不适用 |
外发路由策略 | 轮循 |
ZMQ_HWM选项操作 | 块 |
ZMQ_PULL
流水线节点使用ZMQ_PULL类型的套接字从上游流水线节点接收消息。消息从所有连接的上游节点中公平排队。该zmq_send()函数没有此套接字类型实现。
弃用的别名:ZMQ_UPSTREAM。
ZMQ_PULL特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_PUSH |
方向 | 单向 |
发送/接收模式 | 仅接收 |
入网路由策略 | 公平排队 |
外发路由策略 | 不适用 |
ZMQ_HWM选项操作 | 不适用 |
互斥对模式
互斥对模式用于将一个对等点精确地连接到另一个对等点。此模式用于跨inproc传输的线程间通信。
ZMQ_PAIR
ZMQ_PAIR类型的套接字只能在任何一次连接到单个对等方。对通过ZMQ_PAIR套接字发送的消息不执行消息路由或筛选。
当ZMQ_PAIR套接字由于已达到所连接对等方的高水位线而进入异常状态时,或者如果未连接任何对等方,则套接字上的任何zmq_send(3)操作都将阻塞,直到对等方可用于发送;消息不会被丢弃。
ZMQ_PAIR套接字设计用于通过zmq_inproc(7)传输进行线程间通信,并且不实现自动重新连接等功能。ZMQ_PAIR套接字被视为实验性的,可能还有其他遗漏或损坏的方面。
ZMQ_PAIR特性摘要 | |
---|---|
兼容的对等套接字 | ZMQ_PAIR |
方向 | 双向的 |
发送/接收模式 | 无限制 |
入网路由策略 | 不适用 |
外发路由策略 | 不适用 |
ZMQ_HWM选项操作 | 块 |
返回值
如果成功,zmq_socket()函数应向新创建的套接字返回一个不透明的句柄。否则,它将返回NULL并将errno设置为以下定义的值之一。
失误
英瓦尔
请求的套接字类型无效。
完美
提供的上下文无效。
EMFILE
已达到打开的ØMQ插座总数的限制。
永恒
指定的上下文已终止。
其他:
- 点赞
- 收藏
- 关注作者
评论(0)