[zeromq-dev] Reactor Pattern using zmq_poll for ZMQ_SUB sockets
praveen.baratam+zmq at gmail.com
Sat Sep 25 05:37:03 CEST 2010
Thanks for writing back.
I did take a look into the zmq_reactor. the examples were not so clear and
there is no documentation of the library and its api. i guess i should infer
everything from the code.
I was wondering whether this reactor will yield any performance benefit
apart from provisioning a API. When it comes to normal sockets the benefit
of ASIO (Reactor/Proactor pattern) is obvious because the OS kernel paves
the path for it. Unless such an optimization exists inside zmq kernel and
the added overhead of container (vector, unordered_map used inside reactor)
lookup, modification etc is lesser than thread-per-socket approach, there is
no point in using it.
I guess the developers of ZMQ will be able to throw more light on this
Have you tried using zmq_reactor anytime?
On Sat, Sep 25, 2010 at 12:57 AM, Chuck Remes <cremes.devlist at mac.com>wrote:
> On Sep 24, 2010, at 1:41 PM, Praveen Baratam wrote:
> I am trying to write a pub-sub server using ZMQ.
> The simplest way to describe my application is its a messaging server to
> which clients connect using normal tcp sockets over intranet/internet. The
> purpose is to exchange messages between them.
> I am using boost::asio to implement the tcp server part of the app. So each
> client connection is represented as a session object with out a thread. A
> single thread reads from all the client-connections/tcp-sockets and
> publishes all incoming messages to a PUB socket. ZMQ_SUB sockets are
> instantiated as part of session/connection object and are connected to this
> PUB socket. The transport used is inpc://.
> Now the tricky part is client connections are managed using asio; means no
> thread-connection pair. so i dont have a thread to wait on the SUB socket
> attached to the connection. i guess i should use zmq_poll but it appears
> complicated to work with if you have 10,000 SUB sockets in the server
> process. It would have been great if there is a wrapper around zmq_poll and
> socket which would give something like ......
> s.subscribe("topic", callback, arg)
> Ideally a single threaded Reactor using zmq_poll should call the callback
> function when there are messages waiting to be read from a socket similar to
> how boost::asio library handles epoll internally for network sockets.
> boost::asio uses proactor pattern but i guess i made my point.
> Kindly advise me in this regard.
> Take a look at this project:
> Also, you may want to search the mailing list archives for prior
> discussions of this exact topic. I think the iMatix folks plan on building a
> reactor library on top of 0mq but it will be part of an add-on library.
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the zeromq-dev