2010-09-28 10 views
7

En un socket REQ/REP, si el socket envía una solicitud a un nodo muerto (desconectado), el mensaje no se entrega y permanece en una cola de mensajes ocupando la memoria. ¿Cómo puede uno limpiar estos mensajes no entregados (digamos, mensajes que están en la cola por más de 1 minuto)?Decisiones de diseño de ZeroMQ

Gracias!

Respuesta

3

Es posible que desee establecer el parámetro opcional ZMQ_LINGER:

La opción ZMQ_LINGER fijará el plazo para la socket especificado Linger. El período de Linger determina cuánto tiempo espera de mensajes que tienen aún para ser enviado a un compañero deberá persistir en memoria después de una toma de corriente está cerrado con zmq_close (3), y afecta a más la terminación de contexto del zócalo con zmq_term (3).

... cuyo valor positivo establecerá un tiempo máximo para que el mensaje se bloquee en la cola.

Ver http://api.zeromq.org/2-1-1:zmq-setsockopt

+0

que no sólo se aplican a la toma local (que no se ha cerrado)? La pregunta es cuándo ha terminado el par remoto, pero el socket local todavía está vivo, ¿no? – DNA

Cuestiones relacionadas