Двунаправленный издатель-подписчик ZMQ - PullRequest
0 голосов
/ 13 мая 2019

Я прочитал это: http://api.zeromq.org/4-3:zmq-socket и, насколько я понимаю, ни один из типов сокетов не подходит близко к требованиям, которые, я думал, были простыми ... По сути, я хочу, чтобы ZMQ работал точно так же, как NATSработает (у меня просто нет достойного клиента для NATS, в противном случае я бы использовал его).

Итак, для описания проблемы: у меня есть главный узел и несколько подчиненных узлов.Мастер должен отправлять сообщения на узлы и получать ответы асинхронно / вне пределов (т.е. должна быть возможность отправить более одного сообщения до получения ответа).Все подчиненные узлы уникальны.Т.е. не может быть и речи о циклическом переборе, честном размещении в очереди и т. Д.: Каждый раб должен получать назначенное сообщение (иногда есть группы рабов, которым всем нужно получать одно и то же сообщение).

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


Пока я смотрел на SERVER / CLIENT pair и DEALER / ROUTER, но ни один из них на самом деле не работает из-за того, как они отправляют сообщения случайным адресатам.

1 Ответ

0 голосов
/ 14 мая 2019

Похоже, что будут работать два разъема PUB / SUB.

Мастер имеет два разъема

  • PUB-сокет отправляет сообщения с указанным идентификатором (субъектом)
  • SUB-сокет (подписан на все) получает сообщения с идентификатором (субъектом) в качестве ответа от подчиненных устройств

Каждый Slave имеет два сокета

  • SUB-сокет подписывается на ID (субъекту) свойзаинтересован в
  • PUB-сокете для отправки ответного ответа вне диапазона с ID в качестве темы.

Операция

  • Мастер будет отправлять сообщения с определеннымтема
  • только раб, который подписывается на эту тему, получит сообщение.
  • Подчиненный может получать несколько сообщений.
  • Подчиненный может опубликовать ответ ведущему за пределами группы с темой в качестве идентификатора на своем сокете паба
  • Подчиненные устройства могут динамически приходить и уходить
...