zeromq高水位

设置高水位的方法为设置zeromq配置项的通用方法(zmq_setsockopt),只是设置的变量根据传入的标识值改变,利用socket_base_t类中的setsockopt方法来设置。socket_base_t方法中有从own_t类中继承的option_t类型的成员变量。option_t类中有发送高水位及接收高水位的成员变量。

高水位的默认值设置为1000,单位为消息个数

一般来讲,pubsub模式的高水位不用设置基本能够满足需求。

如果设置conflate(合并)字段,套接字会忽略高水位设置。

低水位设置要求:

低水位必须低于高水位

低水位的值不能为很低的值如0,因为填充消息队列后只有消息被读取后再次填充,所有没有必要报酬后方进度。

低水位不能够设置特别高,如(hwm-1)因为消息被读取一个后就会允许重新写入,然后写入一个后继续休眠。效率很低。

如果高水位>1024*2,

低水位=高水位-1024,

否则:

低水位= 高水位的一半

非阻塞的类型(或组播)才可以使用高水位

在一个发布端多个订阅端的情况下,发送性能会下降,水位限制的压力会减小(因为一个连接一个水位限制),内存使用率会增加。


各种套接字水位设置区别:

     对于inproc类型的套接字,因为不牵扯到IO线程,所以设置过程如下:

      1.在设置bind类型套接字时,检查是否有已经连接到该地址的连接,如果有则连接到绑定的套接字上。此时,将连接端的发送发送高水位和对端的接收高水位


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值