Обнаружение медленных читателей с помощью zmq (zeromq) - PullRequest
5 голосов
/ 22 августа 2009

Я пытаюсь заменить небольшую домашнюю систему обмена сообщениями, и немного играюсь с zmq . Мне нужно будет обнаружить медленных читателей и загрузить / отключить их - медленные читатели в значительной степени означают, что конкретный потребитель, чей размер очереди превышает определенный порог.

Пока что zmq блокирует каждого потребителя, если один из них немного медленный (достаточно справедливый), но Я не могу найти способ обнаружить потенциального медленного потребителя. У любого есть опыт работы с и как это возможно с zmq - или есть какая-либо другая система обмена сообщениями без посредников, чтобы рекомендовать?

Ответы [ 2 ]

3 голосов
/ 04 июля 2010

Начиная с zeromq-2.0.7, вы можете установить опцию ZMQ_HWM в сокете ZMQ_PUB, чтобы контролировать максимальное количество сообщений, которые могут быть поставлены в очередь для подписчика. По достижении максимальной отметки все дальнейшие сообщения, предназначенные для этого подписчика, будут отбрасываться до тех пор, пока размер очереди не опустится ниже отметки максимальной отметки. Это ограничивает объем памяти, выделяемой для того, что вы называете медленным читателем.

Однако, поскольку библиотека ZeroMQ предоставляет сокеты, а не клиентов, вы не сможете идентифицировать и принудительно отключить нежелательных клиентов без изменения самой библиотеки.

0 голосов
/ 05 февраля 2013

В руководстве ZeroMq есть раздел, в котором предлагается реализация шаблона, называемого « Шаблон суицидальной улитки ».

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

...