zeromq的发送队列长度的参数设置

来源:互联网 发布:数据定义语言包括什么 编辑:程序博客网 时间:2024/06/06 17:28

zeromq里面关这个对垒长度限制叫做 “High Water Marks”,2.0版本默认是没有限制的,3.0里面这个长度默认为1000。这个比较容易达到啊,根据包大小和消耗的内存大概修改一下才行。 zeromq的api也提供了修改系统的tcp缓存大小的接口了。

详细的socket选项,参考 http://api.zeromq.org/3-2:zmq-setsockopt

ZMQ_SNDHWM: Set high water mark for outbound messages
ZMQ_RCVHWM: Set high water mark for inbound messages

设置发送队列的长度

    socket  = new zmq::socket_t (*context, ZMQ_PUSH);
    int queue_length = 5000;
    socket->setsockopt(ZMQ_SNDHWM, &queue_length,sizeof(queue_length));
    socket->connect ("tcp://127.0.0.1:5555");



其他有意思的选项:

ZMQ_AFFINITY: Set I/O thread affinity  IO线程的亲和性

ZMQ_SNDBUF: Set kernel transmit buffer size    设置内核的发送缓冲长度。
ZMQ_RCVBUF: Set kernel receive buffer size   设置内核的接受缓冲长度。
应该就是系统的那个tcp缓存大小

ZMQ_RECONNECT_IVL: Set reconnection interval  重连间隔
ZMQ_RECONNECT_IVL_MAX: Set maximum reconnection interval

ZMQ_BACKLOG: Set maximum length of the queue of outstanding connections tcp相关的设置
0 0
原创粉丝点击