ZeroMQ дизайнерские решения - PullRequest
7 голосов
/ 28 сентября 2010

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

Спасибо!

1 Ответ

3 голосов
/ 31 марта 2011

Возможно, вы захотите установить необязательный параметр ZMQ_LINGER:

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

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

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

...