If you call recv on an XPUB socket you'll get the subscriptions coming in - no need to use XSUB, will work with SUB too
On Tue, 2018-09-18 at 17:03 -0600, Carol Rice wrote: > Thanks for the reply, Bill. > > I've read the zguide http://zguide.zeromq.org/page: > all#The-Dynamic-Discovery-Problem > and it appears this is exactly what xpub and xsub does: > > " We need XPUB and XSUB sockets because ZeroMQ does subscription > forwarding > from subscribers to publishers. XSUB and XPUB are exactly like SUB > and PUB > except they expose subscriptions as special messages. The proxy has > to > forward these subscription messages from subscriber side to publisher > side, > by reading them from the XPUB socket and writing them to the XSUB > socket. > This is the main use case for XSUB and XPUB." > > However, there is no example code for this is the zguide. Are there > any > examples in C code for using xpub/xsub for exposing subscriptions as > special messages? It sounds like this is what I'm looking for, to see > a > list of all the subscribed topics, or subscriptions. > > Carol > > On Tue, Sep 18, 2018 at 2:19 PM, Bill Torpey <[email protected]> > wrote: > > > Hi Carol: > > > > ZeroMQ actually doesn’t have the concept of “topics”, at least in > > the way > > that term is used with other middlewares. > > > > ZeroMQ does filtering on the prefix of a message, which is a bit of > > a > > different animal. You can use that to create a topic-based > > addressing > > scheme similar to other middlewares, but it’s not an intrinsic part > > of > > ZeroMQ. > > > > When a SUB socket connects to a PUB socket, the list of prefixes > > that the > > SUB wants to receive are sent to the PUB socket as part of the > > connection > > process. Then, when the PUB socket wants to send a message to a > > SUB > > socket, it compares the list of prefixes it maintains for the SUB > > socket > > against the beginning of the message. If there’s a match, the > > message is > > sent, otherwise it is discarded. (That list can change over time > > as well, > > and the SUB sends any changes to all the PUBs that it is connected > > to). > > > > If you follow that through, you can see that to get a list of all > > topics > > that are being subscribed to, you’d need to ask every subscriber > > and > > collect the results. Publishers, on the other hand, are not > > associated > > with topics — the “topic” (actually filter) is associated with the > > SUB > > socket, although it is evaluated by the PUB socket when it has a > > message to > > send. (The exception is when using a pgm: transport — since pgm is > > multicast, PUB sockets publish everything and it is the SUB socket > > that > > does the prefix matching when it receives a message). > > > > If you really need to know which “topics” exist on the network, you > > probably want to use XPUB/XSUB sockets (which expose the filters to > > the > > application), and perhaps also a central ZeroMQ broker. The > > http://zguide.zeromq.org/page:all#The-Dynamic-Discovery-Problem > > chapter > > is a good starting point for learning about how that might work. > > > > Hope this helps. > > > > Bill > > > > > On Sep 18, 2018, at 3:25 PM, Carol Rice <[email protected]> > > > wrote: > > > > > > I know for pub/sub sockets, I can set the subscriber filter to an > > > empty > > > > string and receive messages from all topics. > > > > > > But I want to know if there is a way I can publish all available > > > topics > > > > and receive a list of all the available topics to subscribe to? > > > > > > Thank you for your help. > > > _______________________________________________ > > > zeromq-dev mailing list > > > [email protected] > > > https://lists.zeromq.org/mailman/listinfo/zeromq-dev > > > > _______________________________________________ > > zeromq-dev mailing list > > [email protected] > > https://lists.zeromq.org/mailman/listinfo/zeromq-dev > > > > _______________________________________________ > zeromq-dev mailing list > [email protected] > https://lists.zeromq.org/mailman/listinfo/zeromq-dev -- Kind regards, Luca Boccassi
signature.asc
Description: This is a digitally signed message part
_______________________________________________ zeromq-dev mailing list [email protected] https://lists.zeromq.org/mailman/listinfo/zeromq-dev
