2010-09-28 4 views
7

В гнезде REQ/REP, если сокет отправляет запрос на мертвый (отсоединенный) узел, сообщение не доставляется и остается в очереди сообщений, занимающей память. Как можно очистить эти недополученные сообщения (скажем, сообщения, которые находятся в очереди более 1 минуты)?Решения по проектированию ZeroMQ

Спасибо!

ответ

3

Вы можете установить дополнительный параметр ZMQ_LINGER:

Опция ZMQ_LINGER поставь задерживаться период для указанного гнезда. Период задерживаться определяет , сколько времени в ожидании сообщений, которые имеют еще быть отправлен сверстником Остановится в памяти после того, как сокет закрыт с zmq_close (3), а в дальнейшем влияет на прекращение контекста сокета с zmq_term (3).

... для которого положительное значение устанавливает максимальное время для сообщения, которое должно быть заблокировано в очереди.

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

+0

ли не то, что применяются только к локальному сокету (который не был закрыт)? Вопрос в том, когда удаленный партнер завершился, но локальный сокет все еще жив, конечно? – DNA

Смежные вопросы