Tregoreg
Tregoreg

Reputation: 22306

Topics in ZeroMQ REP sockets

When using ØMQ socket of type SUB, one may use

sub_socket.setsockopt_string(zmq.SUBSCRIBE, 'topic')

Is the same possible also with REP sockets, allowing a worker to only handle specific topics, leaving other topics to different workers?

I'm very afraid that it is impossible, quoting http://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/patterns/pubsub.html:

In the current versions of ØMQ, filtering happens at the subscriber side, not the publisher side.

But still, I'm asking if there is some trick to achieve that, because such a functionality would have a huge impact on my infrastructure.

Upvotes: 1

Views: 799

Answers (1)

Jason
Jason

Reputation: 13766

Nope. Can I assume that you've got a REQ or DEALER server socket that sends work to REP workers, that then respond with the completed work back to the server? And that you're looking for a way to make your server communicate to specific clients rather than just pass out tasks in a round-robin fashion?

Can't do it. See here, those sockets are only, always, round-robin. If you want to communicate to a specific client, you must either have a socket that talks only to that client, or you must start the communication from the client (switch your socket pairing so the worker requests whatever work its ready for, and the server responds with it, and then the worker creates a new request with the completed work). Doing anything else gets much more complicated.

Upvotes: 1

Related Questions