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

你可能感兴趣的:(zeromq的发送队列长度的参数设置)