2013-04-15 3 views
1

Похоже, что ZeroMQ будет собирать данные на стороне сервера при использовании протоколов pgm и epgm и отправлять несколько обновлений в один и тот же пакет многоадресной передачи. Например, если я вызову zmq_msg_send 10 000 раз и посмотрю на данные, которые я отправляю в tcpdump, я вижу, что я отправляю менее 10 000 различных сообщений. Ожидается ли это? Есть ли способ настроить ZeroMQ, чтобы не делать этого?ZeroMQ упаковывает несколько сообщений в одно и то же обновление

ответ

1

Да, это ожидаемое поведение. Цитата из ZeroMQ FAQ (http://www.zeromq.org/area:faq):

ØMQ пакеты сообщений условно. Вместо того, чтобы ждать предопределенного количества сообщений и/или предопределенного временного интервала, он отправляет все сообщения, доступные в данный момент за один раз. Представьте, что плата сетевого интерфейса занята отправкой данных. Когда он будет готов отправить больше данных, он запросит ØMQ для новых сообщений. ØMQ отправляет все доступные сообщения в данный момент. Это вредит латентности первого сообщения в пакете? Нет. Сообщение не будет отправлено ранее, так как сетевая карта была занята. Напротив, латентность последующих сообщений будет улучшена, потому что отправка одной партии на карту быстрее, чем отправка небольших сообщений. С другой стороны, если сетевая карта не занята, сообщение отправляется сразу, не дожидаясь следующего сообщения. Таким образом, он будет иметь наилучшую возможную задержку.

Невозможно настроить это. И нет причин, так как партии ZeroMQ не увеличивают задержки.

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