Q : " Куда zmq_send()
отправляет несколько соединений? "
Отправляет сообщения в зависимости от того, какой из используется фактический архетип.
PUB/SUB
отправляет каждое сообщение всем одноранговым узлам, которые положительно подписаны на Topi c (двоичное сопоставление левой стороны в виде строки полезной нагрузки) тогда как некоторые внутренние детали в выпусках до v3 фактически физически перемещали любое сообщение всем одноранговым узлам (и там SUB
-side Context()
-инстанции, вроде ALAP, выполняли Topi c - фильтрация), не так как v3 +.
PUSH/PULL
не имеет этого «обещания», так что лучше попробуйте представить сторону PUSH
в качестве командира очереди заданий, и каждый рабочий на PULL
получает (здесь, в циклическом порядке) следующую задачу из очереди заданий, как это делают общие балансировщики нагрузки.
Каждый другой из встроенных архетипов - REQ/REP
, XPUB/XSUB
, DEALER/ROUTER
, PAIR/PAIR
, ... - имеют аналог Мы сформулировали «обещанное поведение», поэтому сервисы ZeroMQ могут основываться на объединении этих тривиальных архетипов в некоторые более сложные и структурированные групповые поведения для приложений обмена сообщениями / сигнализации.
Q : " Разумным предположением является то, что оно будет отправлено всем подключенным узлам "
Если бы это было так, было бы потеряно ключевое свойство PUSH/PULL
" обещанное поведение "и не было бы никакой разницы между этим и PUB/SUB
Архетипом (который имеет еще меньше смысла для разработки двух вещей, которые делают то же самое, не так ли? )
В случае, если кто-то никогда не работал с ZeroMQ,
здесь можно с первого взгляда посмотреть на "Принципы ZeroMQ менее чем за Пять секунд"
, прежде чем углубляться в детали