ZeroMQ: сокет STREAM для прокси сокета DEALER - PullRequest
0 голосов
/ 17 мая 2018

У меня есть следующие настройки:

zmq::proxy( acceptor, clients, nullptr );

Мой acceptor является zmq::socket_type::stream, а
мой clients является zmq::socket::type::dealer.

Я обнаружил, что когда другой конец посылает большой запрос (~ 16 [kB]), этот запрос разбивается и распределяется по цепочкам моего дилера по частям.Один дилер получает главу сообщения, другие получают кусочки посередине.Я не устанавливаю никаких специальных параметров, поэтому кажется, что это поведение по умолчанию zeromq.

Я использую ZeroMQ 4.2.2.

Есть ли способ отменить это поведение и гарантировать доставкуполные сообщения в теме моего дилера?

1 Ответ

0 голосов
/ 17 мая 2018

@ namdam заслуживает [+1] за публикацию сведений о версии

Можно ли это переопределить ... ?

Да, соблюдайте документированные правила API

Сокет типа ZMQ_STREAM используется для отправки и получения данных TCP от однорангового узла не-MQ,при использовании транспорта tcp://.Сокет ZMQ_STREAM может выступать в роли клиента и / или сервера, отправляя и / или получая данные TCP асинхронно.

Совместимые одноранговые розетки.,,,, none .

Так или иначе, создайте прокси-сервер для обработки совместимых сокет-архетипов (без попытки жестко связать ZMQ_STREAM с любым другим родным сокет-архетипом ZeroMQ), т.е.вообще не используйте ZMQ_STREAM или не создавайте шлюз для чтения, который декодирует и обеспечивает совместимое с ZMQ_STREAM поведение на одной стороне и взаимодействует с другими собственными типами сокетов ZeroMQ на другой стороне шлюза.логика.

Если вы сомневаетесь,
вы можете получить представление о основных концептуальных различиях
, кратко изложенных в иерархии [ ZeroMQ, в менеечем пять секунд ] Раздел .

...