Я заметил в разделе "Вопросы и ответы" в разделе " Мониторинг", что невозможно получить список подключенных одноранговых узлов или получать уведомления, когда одноранговые соединения соединяются/разъединяются.
Означает ли это, что также невозможно узнать, какие темы знает сокет PUB/XPUB, который он должен опубликовать, исходя из обратной связи с обратной связью? Или есть какой-то способ доступа к этим данным?
Я знаю, что ZMQ> = 3.0 " поддерживает фильтрацию PUB/SUB у издателя ", но я действительно хочу фильтровать свой код приложения, используя знания ZMQ о том, на какие темы подписаны.
В моем случае я хочу опубликовать информацию о статусе робота. Некоторые темы включают основные аппаратные действия, такие как переключение линий выбора на АЦП для чтения значений IR.
У меня есть поток издателя, который работает на боте, который должен делать только это "чтение", чтобы получить ИК-данные, когда есть фактически подписчики. Однако, поскольку я могу только кормить строку в моем pub_sock.send, мне всегда приходится выполнять дорогостоящую операцию, даже если ZMQ собирается отказаться от этого сообщения, когда нет подписчиков.
У меня есть реализация, которая использует backcannel REQ/REP сокет для отправки информации о теме, которую мое приложение может проверить в своем цикле публикации, тем самым только собирая данные, которые необходимо собрать. Это кажется очень неэлегантным, поскольку, поскольку ZMQ уже должен иметь нужные мне данные, о чем свидетельствует его фильтрация у издателя.
Я заметил, что в этом сообщении списка рассылки OP, похоже, может видеть сообщения подписки, отправляемые в сокет XPUB.
Тем не менее, нет упоминания о том, как они это сделали, и я не вижу таких способностей в документах (по-прежнему глядя). Возможно, они просто использовали Wireshark (чтобы увидеть подписку на восходящий канал в разъем XPUB).