Ich habe in der FAQ in der Monitoring section festgestellt, dass es nicht möglich ist, eine Liste der verbundenen Peers zu erhalten oder benachrichtigt werden, wenn Peers verbinden/trennen.Get Subscriber-Filter von einem ZMQ PUB-Socket
Bedeutet dies, dass es auch nicht möglich ist, zu wissen, welche Themen ein PUB/XPUB-Socket aus seiner Upstream-Rückmeldung veröffentlichen sollte? Oder gibt es eine Möglichkeit, auf diese Daten zuzugreifen?
Ich weiß, dass ZMQ> = 3.0 "supports PUB/SUB filtering at the publisher", aber was ich wirklich will, ist an meinem Anwendungscode zu filtern, mit dem Wissen, ZMQ hat über welche Themen abonniert sind.
Mein Anwendungsfall ist, dass ich Informationen über den Status eines Roboters veröffentlichen möchte. Einige Themen beinhalten wichtige Hardwareaktionen, wie das Umschalten der Auswahlleitungen auf einem ADC, um IR-Werte zu lesen.
Ich habe einen Publisher-Thread auf dem Bot ausgeführt, der nur das "Lesen" tun sollte, um IR-Daten zu erhalten, wenn es tatsächlich Abonnenten gibt. Da ich jedoch nur eine Zeichenfolge in mein pub_sock.send eingeben kann, muss ich immer die kostspielige Operation ausführen, selbst wenn ZMQ gerade diese Nachricht absetzen soll, wenn keine Abonnenten vorhanden sind.
Ich habe eine Implementierung, die einen Backchannel-REQ/REP-Socket verwendet, um Topic-Informationen zu senden, die meine App in ihrer Veröffentlichungsschleife überprüfen kann und dabei nur Daten sammelt, die gesammelt werden müssen. Dies scheint jedoch sehr unelegant zu sein, da ZMQ bereits die Daten haben muss, die ich benötige, was durch seine Filterung beim Herausgeber belegt wird.
Ich bemerkte, dass in diesem mailing list message das OP in der Lage zu sehen Subscribe-Nachrichten zu einem XPUB-Socket gesendet werden scheint.
Allerdings wird nicht erwähnt, wie sie das gemacht haben, und ich sehe keine solche Fähigkeit in den Dokumenten (immer noch). Vielleicht benutzten sie nur Wireshark (um Upstream-Nachrichten an einen XPUB-Socket zu abonnieren).
Ich habe zweimal auf dem #zeromq IRC-Kanal gepostet, um dies zu fragen, mit 6 Stunden Offsets um Zeitzonen zu helfen, aber bis jetzt keine Antwort erhalten haben. – dfarrell07
Dies ist immer noch eine offene Frage, für die ich aktiv eine Antwort suche. – dfarrell07
Haben Sie eine Antwort gefunden? Ich brauche auch meinen PUB-Server, um zu wissen, welche Filter auch abonniert sind.Der Server muss keine Daten erstellen, an denen keine Clients interessiert sind. (Beispiel: Sagen Sie, wenn SUB-Clients nur Wetterdaten für New York abonniert haben, dann sollte der PUB-Server die Daten nicht für jede andere Stadt der Welt erstellen müssen , nur um es wegzuwerfen.) –