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

 

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相关的设置

你可能感兴趣的:(Open,Source)