Кто-нибудь может объяснить пример запроса брокера zeromq? - PullRequest
6 голосов
/ 06 декабря 2010

Я ссылаюсь на «Брокер-запрос-ответ» в документации Zeromq: http://zguide.zeromq.org/chapter:all

Я получаю общее представление о приложении: оно действует как посредник и маршрутизирует сообщения отклиент на сервер и обратно.

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

Теперь в примере они отправляют только 1 сообщение (привет) и 1 ответ (мир), поэтому даже если сообщения перепутаны, это нене имеет значения, но я предполагаю, что testclient и сервер поддерживаются на предельно простом уровне.

Любые мысли приветствуются ...

Ответы [ 2 ]

9 голосов
/ 26 апреля 2011

Все сокеты zeromq неявно имеют идентичность, связанную с ними. (Вы можете получить это удостоверение с помощью zmq_getsockopt () .)

Для двунаправленных типов сокетов, отличных от XREQ или XREP, этот идентификатор автоматически передается как часть каждого сообщения, отправляемого через сокет. Сокет REP использует этот идентификатор для направления ответного сообщения обратно в соответствующий сокет. Это имеет эффект автоматической маршрутизации.

Под капотом идентификаторы передаются через многочастные сообщения. Первое сообщение в составном сообщении будет содержать идентификатор сокета. За ним последует пустое сообщение, за которым следуют все сообщения, указанные пользователем. Сокеты REQ и REP автоматически обрабатывают эти префиксные сообщения. Однако, если вы используете сокеты XREQ или XREP, вам необходимо заполнить эти идентификационные сообщения самостоятельно.

Если вы ищете «идентичность» в ZMQ Guide , вы должны найти все подробности, которые вы когда-либо захотите узнать о работе удостоверений и маршрутизации сокетов.

1 голос
/ 07 декабря 2010

Хорошо, в главе 3 они внезапно объясняют, что существует базовая концепция «конверта», которую неопровержимо использует шаблон req / resp.

Это объясняет, как это работает.

...