Время ожидания/количество ожидающих запросов в шаблоне ZMQ REQ/REP

Я собираюсь начать использовать ZMQ REQ/REP, а не прямой HTTP для своей среды SOA. Но я новичок в использовании MQ для этой цели, поэтому у меня есть пара вопросов.

Q1. При использовании HTTP я могу установить простой тайм-аут и вызвать предупреждение, если сервер A не может связаться с сервером B. Основываясь на моем текущем понимании ZMQ, ZMQ просто заставит сервер A ждать повторного подключения сервера B, и я не буду знаю, что есть проблема. Как мне обойти это?

Q2. Как мне получить общую картину того, сколько запросов в настоящее время ожидает/поставлено в очередь, и, возможно, получить список для целей расследования?

Максимум


person Max    schedule 29.12.2013    source источник


Ответы (1)


Q1. При использовании HTTP я могу установить простой тайм-аут и вызвать предупреждение, если сервер A не может связаться с сервером B. Основываясь на моем текущем понимании ZMQ, ZMQ просто заставит сервер A ждать повторного подключения сервера B, и я не буду знаю, что есть проблема. Как мне обойти это?

Не используйте REQ/REP; используйте DEALER и ROUTER на клиенте и сервере соответственно; они более универсальны, асинхронны и не блокируются, как rep/req.

Для тайм-аутов вы можете установить его явно или использовать опросник, лучший выбор, поскольку он обеспечивает большую гибкость, см. это .

Как мне получить общую картину того, сколько запросов в настоящее время ожидает/поставлено в очередь, и, возможно, получить список для целей расследования?

Я не верю, что это возможно, по крайней мере, в 3.x. В общем, такие детали абстрагируются zmq.

person raffian    schedule 29.12.2013
comment
Спасибо. Для Q2, если это невозможно, то как я узнаю, есть ли узкое место с большим количеством заполняющихся запросов, и как я узнаю, что вся очередь очищена/сброшена? - person Max; 30.12.2013
comment
Сокеты Zeromq имеют буферы приема и отправки, в зависимости от типа (некоторые имеют оба). Если буфер сокета превышает верхнюю отметку (HWM), он либо отбрасывает, либо блокирует дополнительные сообщения (см. ="nofollow noreferrer">api.zeromq.org/3-2:zmq-socket), опять же в зависимости от типа сокета. Вы должны тестировать и измерять, чтобы найти узкие места и соответствующим образом настроить HWM. Также нет флеша; чтобы очистить сообщения, находящиеся в буфере, сокет должен быть закрыт. Прочтите FAQ, многие из этих вопросов рассмотрены, надеюсь, это поможет! zeromq.org/area:faq - person raffian; 30.12.2013