2010-09-28 13 views
7

W gnieździe REQ/REP, jeśli gniazdo wysyła żądanie do martwego (odłączonego) węzła, komunikat nie jest dostarczany i pozostaje w kolejce wiadomości zajmującej pamięć. Jak można wyczyścić niedostarczone wiadomości (powiedzmy wiadomości znajdujące się w kolejce przez ponad minutę)?Decyzje projektowe ZeroMQ

Dzięki!

Odpowiedz

3

Możesz też ustawić parametr opcjonalny ZMQ_LINGER:

Opcja ZMQ_LINGER ustala terminu określonego gniazda marudzić. Okres marudzić określa jak długo czeka na komunikaty, które mają jeszcze zostać wysłany do wzajemna marudzić w pamięci po zamknięciu gniazda z zmq_close (3), a ponadto wpływa wypowiedzenie gniazdka za kontekście z zmq_term (3).

... dla której wartość dodatnia ustawi maksymalny czas na zablokowanie komunikatu w kolejce.

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

+0

Czy to nie stosuje się tylko do gniazda lokalnego (które nie zostały zamknięte)? Pytanie brzmi, kiedy zdalny peer został zakończony - ale lokalne gniazdo wciąż jest żywe? – DNA