ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性

ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html

本文地址http://www.cnblogs.com/fengbohello/p/4398953.html

翻译:郝峰波

mail : [email protected]


ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_setsockopt

zmq_setsockopt(3)         ØMQ Manual - ØMQ/4.1.0

Name

zmq_setsockopt –设置ZMQ socket的属性

Synopsis

int zmq_setsockopt (void *socket, int option_name, const void *option_value, size_t option_len);
注意:除了以下属性,所有的属性均需要在对socket进行bind/connect操作之前设置:
ZMQ_SUBSCRIBE, ZMQ_UNSUBSCRIBE, ZMQ_LINGER, ZMQ_ROUTER_HANDOVER,
ZMQ_ROUTER_MANDATORY, ZMQ_PROBE_ROUTER, ZMQ_XPUB_VERBOSE, ZMQ_REQ_CORRELATE, and ZMQ_REQ_RELAXED

特别的,安全的属性也可以在bind/connect操作之后生效,并且可以随时进行修改并影响之后的bind/connect操作。

Description

zmq_setsockopt()函数会对socket参数指定的socket进行设置,设置的属性由option_name参数指定,属性值由参数option_value指定。option_len参数指定属性值的数据存储空间的大小。

以下的socket属性可以通过zmq_setsockopt()函数进行设置:

ZMQ_SNDHWM:对向外发送的消息设置高水位(最大缓存量)

ZMQ_SNDHWM属性将会设置socket参数指定的socket对外发送的消息的高水位。高水位是一个硬限制,它会限制每一个与此socket相连的在内存中排队的未处理的消息数目的最大值。0值代表着没有限制。

如果已经到达了规定的限制,socket就需要进入一种异常的状态,表现形式因socket类型而异。socket会进行适当的调节,比如阻塞或者丢弃已发送的消息。请从zmq_socket(3)函数中查看更多细节,获取每种类型的socket的精确的行为。

ZMQ并不能保证可以接收像ZMQ_SNDHWM参数一样多的消息,而实际的限制可能在60~70%一下,这取决于这个socket上的消息流。

属性值的类型

int

属性值的单位

消息

默认值

1000

可以应用的socket类型

所有类型

ZMQ_RCVHWM:对进入socket的消息设置高水位

ZMQ_RCVHWM属性将会设置socket参数指定的socket进入的消息的高水位。高水位是一个硬限制,它会限制每一个与此socket相连的在内存中排队的未处理的消息数目的最大值。0值代表着没有限制。

如果已经到达了规定的限制,socket就需要进入一种异常的状态,表现形式因socket类型而异。socket会进行适当的调节,比如阻塞或者丢弃被发送的消息。请从zmq_socket(3)函数中查看更多细节,获取每种类型的socket的精确的行为。

属性值的类型

int

属性值的单位

消息

默认值

1000

可以应用的socket类型

所有类型

ZMQ_AFFINITY:设置I/O线程关联

ZMQ_AFFINITY属性会对socket参数指定的socket新创建的链接设置I/O线程关联。

关联指明了和scoket相关的context上的哪个线程池中的哪个线程来处理新创建的链接。0值表示没有关联,这意味着工作将在线程池中平等的向所有进程进行分发。对于非0值,最低位对应线程1,第二低位对应线程2,等等。比如,设置的值是3的话,说明socket上这之后的链接请求将被I/P线程1和2处理。

请参见zmq_init(3)函数了解更多关于对I/O线程分配的细节。

属性值的类型

uint64_t

属性值的单位

N/A (bitmap)

默认值

0

可以应用的socket类型

N/A

ZMQ_SUBSCRIBE:创建消息过滤标志

ZMQ_SUBSCRIBE属性将会在ZMQ_SUB类型的socekt上创建一个新的消息过滤标志。新建立的ZMQ_SUB类型socket会对进入socket的所有消息进行过滤,这样你就可以使用这个属性来建立最初的消息过滤项。

一个option_value的长度是0的过滤属性会订阅所有的广播消息。一个非空的option_value值会只订阅所有以option_value的值为前缀的消息。一个ZMQ_SUB类型的socket可以附加多个过滤条件,只要一个消息符合过滤条件中的任何一个就会被接受。

属性值的类型

二进制数据

属性值的单位

N/A

默认值

N/A

可以应用的socket类型

ZMQ_SUB

ZMQ_UNSUBSCRIBE:移除消息过滤选项

ZMQ_UNSUBSCRIBE选项会移除一个ZMQ_SUB类型中已经存在的消息过滤项。需要被移除的过滤选项必须是已经使用ZMQ_SUBSCRIBE选项建立了的。如果添加了几个相同的过滤项,ZMQ_UNSUBSCRIBE选项只会移除其中的一个,其它的可以继续使用。

属性值的类型

二进制数据

属性值的单位

N/A

默认值

N/A

可以应用的socket类型

ZMQ_SUB

ZMQ_IDENTITY:设置socket 身份ID

ZMQ_IDENTITY选项会设置socket的身份ID。socket的身份ID只会能在请求/回复模式中使用。也就是说,可以使用ROUTER类型的socket进行socket串联,根据给定的身份ID可以对消息进行路由。

身份ID至少有1 B的长度,最多有255 B的长度。以0位开始的身份ID由ZMQ保留使用。

如果两个socket使用相同的身份ID向第三方进行连接,后果是不确定的。

属性值的类型

二进制数据

属性值的单位

N/A

默认值

NULL

可以应用的socket类型

ZMQ_REQ, ZMQ_REP, ZMQ_ROUTER, ZMQ_DEALER

ZMQ_RATE:设置广播数据的频率

ZMQ_RATE属性会对socket的接收和发送广播(比如zmq_pgm())的频率最大值进行设置。

属性值的类型

int

属性值的单位

千比特/秒

默认值

100

可以应用的socket类型

使用多路广播时,对所有socket类型都可用

<

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值