Асинхронный шаблон от N до N в ZeroMQ?

Хотя я просмотрел руководство, я не могу найти способ сделать следующее:
у нас есть n издателей,
у нас есть m подписчиков.
Каждый подписчик подписывается на определенный тип сообщений (один издатель может отправить более один тип сообщения, несколько пабов могут отправлять сообщения одного и того же типа).
Как создать шаблон N к N (или от N к 1 к N) в 0MQ, который делает это?


person NoSenseEtAl    schedule 04.09.2012    source источник
comment
я чувствую отрицательный голос. что ты пробовал?   -  person Vlad Balmos    schedule 04.09.2012
comment
справочные примеры, простые легко сделать, но в примерах нет ни одного N до N, кроме одного, который мне бесполезен (расширенный запрос-ответ) - мне нужна односторонняя связь   -  person NoSenseEtAl    schedule 04.09.2012
comment
Другими словами, вы спрашиваете, как реализовать темы ROS в zeromq.   -  person Andrew Wagner    schedule 17.10.2012
comment
Обычная хрень, что у вас может быть несколько подписчиков на одного издателя. ВЫ НЕ ЗНАЕТЕ ИЗДАТЕЛЯ FING. Издатель — это КЛАСТЕР. Вы обращаетесь не к издателю, вы обращаетесь к его ГРУППЕ. Эта концепция кажется слишком сложной для масс. Каждая проклятая диаграмма этой ситуации в 0MQ имеет либо один узел, выполняющий прокси/pubsub/что угодно, либо многоадресный UDP. Ни один из них не решает проблему с одноранговым соединением N-N.   -  person Sleeper Smith    schedule 18.11.2014
comment
Я задал тот же вопрос, но с примером кода: stackoverflow.com/questions/49488135/   -  person NumesSanguis    schedule 26.03.2018


Ответы (3)


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

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

person eevar    schedule 04.09.2012
comment
Я хочу иметь набор издателей и набор подписчиков. Но подписчики подписываются не на издателя X, а на тег msg. Также я хочу, чтобы это было асинхронно. - person NoSenseEtAl; 04.09.2012
comment
@NoSenseEtAl: Хорошо. Пожалуйста, объясните, как это противоречит тому, что я сказал выше. - person eevar; 04.09.2012

0MQ автоматически разрешает сети от N до M; просто подключите каждого подписчика к каждому издателю. Это может стать бременем для управления, и в этом случае вы можете использовать простой прокси-сервер, к которому подключаются все издатели и подписчики, см. http://zguide.zeromq.org/page:all#toc36.

person Pieter Hintjens    schedule 11.09.2012
comment
Эта ссылка не работает; найдите пример wuproxy. В итоге вы получаете что-то вроде 7 потоков, участвующих в передаче каждого сообщения (Отправитель -> сокет PUB -> сокет SUB -> прокси -> сокет PUB -> сокет SUB -> получатель), и вам все еще нужно обрабатывать сериализацию и фильтрацию сообщения. печатает самостоятельно, поэтому zmq в настоящее время не является заменой промежуточного программного обеспечения, такого как ROS (хотя вы можете написать его поверх zmq) - person Andrew Wagner; 17.10.2012
comment
И как вы подключаетесь к каждому издателю? Подумайте о группе автоматического масштабирования AWS. Запрос IP-адреса, подключение к каждому из них и координация начала отправки сообщения, добавление/удаление новых издателей по мере их поступления и ухода. Нет прохода. - person Sleeper Smith; 18.11.2014

Я сделал простой пример на C, который использует встроенное устройство пересылки zmq для пересылки сообщений от N издателей N подписчикам. Код доступен по адресу https://gitorious.org/hellozmq.

person Jiva    schedule 10.01.2013
comment
Спасибо, но нет, спасибо. Когда эта единственная коробка рушится, рушится все. Следующий. - person Sleeper Smith; 18.11.2014
comment
Хорошо, но если основной проблемой является отказ в одной точке. Все N подписчиков могут напрямую подключаться к N издателям, а брокер может действовать как служба каталогов. - person Jiva; 30.11.2015