Я читаю Руководство ZeroMQ и натолкнулся на следующий отрывок, касающийся сокета ROUTER
и идентификаторов:
Приложение который использует сокет ROUTER
для связи с указанными c узлами, которые могут преобразовать логический адрес в идентификатор, если он построил необходимую таблицу ha sh. Поскольку сокеты ROUTER
сообщают только идентификатор соединения (указанному c узлу), когда этот узел отправляет сообщение, вы можете только реально ответить на сообщение, а не спонтанно общаться с узлом.
Это верно, даже если вы перевернете правила и заставите ROUTER
подключиться к одноранговому узлу, а не ждать, пока одноранговый узел подключится к ROUTER
, Однако вы можете заставить сокет ROUTER
использовать логический адрес вместо его идентификатора. Справочная страница zmq_setsockopt
вызывает эту настройку идентификатора сокета.
Согласно этому отрывку, "вы действительно можете только ответить на сообщение, а не спонтанно поговорить с партнером", то есть ROUTER
не может отправить сообщение указанному c DEALER
, но следующее предложение подразумевает, что вы можете, если вы заставите сокет маршрутизатора использовать логический адрес: «Однако вы можете заставить сокет ROUTER
использовать логический адрес вместо его идентификатора» . Эта часть смущает меня, потому что они только что сказали, что вы не можете спонтанно отправлять сообщения от маршрутизатора дилеру, но теперь они утверждают, что вы можете. Если вы перейдете по этой ссылке на руководство, вы увидите, что после этого отрывка они говорят "Это работает следующим образом", но шаги, которые они дают, не проясняют, как отправлять спонтанные сообщения. сообщение от ROUTER
указанному c DEALER
и возврат ответа обратно к исходному ROUTER
.
Мой вопрос: Возможно ли для одного ROUTER
сокета отправить запрос на указанный c DEALER
(из многих) сокет и DEALER
отправить результат запроса обратно к ROUTER
? И если это возможно, как это можно сделать?
Последующий вопрос: Если это невозможно, существует ли лучшая комбинация разъемов для этого?
Ниже приведена грубая схема моего предполагаемого дизайна:
По сути, клиент отправляет запрос на 1 спецификацию c сервер, этот сервер обрабатывает запрос и возвращает результат запроса клиенту. Теперь клиент имеет такой результат и знает, на каком сервере он был обработан.