2010-09-28 4 views
7

Dans un socket REQ/REP, si le socket envoie une requête à un nœud mort (déconnecté), le message n'est pas délivré et reste dans une file d'attente occupant de la mémoire. Comment peut-on nettoyer ces messages non distribués (disons, les messages qui sont dans la file d'attente pendant plus d'une minute)?Décisions de conception de ZeroMQ

Merci!

Répondre

3

Vous pouvez définir le paramètre optionnel ZMQ_LINGER:

L'option ZMQ_LINGER doit définir la période attardent la prise spécifiée. La période de linger détermine combien de temps les messages en attente qui ont encore être envoyé à un pair doit persister dans la mémoire après une prise de courant est fermé avec zmq_close (3), et affecte en outre la fin de contexte de la prise avec zmq_term (3).

... pour laquelle une valeur positive définira un délai maximum pour le blocage du message dans la file d'attente.

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

+0

Ne s'applique pas seulement à la prise locale (qui n'a pas été fermé)? La question concerne le moment où l'homologue distant est terminé - mais le socket local est toujours en vie, sûrement? – DNA

Questions connexes