Hi Jake

In fact, most ZMQ socket types do some sort of load balancing when connected with multiple other sockets. See [1], especially the "Outgoing routing strategy" and "Incoming routing strategy" in the table for each socket type. TL;DR if the socket allows receiving messages and is connected to multiple other sockets, it will try to read from all of those sockets "fairly". If the socket allows sending messages and is connected to multiple other sockets, it will usually round-robin when sending.


Of course PUB (and RADIO) will not round-robin, but "fan out" instead, meaning all connected sockets will receive every message.

And ROUTER is an exception too: When sending, it uses the first message part (set by the application) to determine the correct receiver. This allows you to send a message to one specific connected socket. When receiving, it prepends a message part that identifies the socket which sent the message. Your application will have to inspect that first part to know who is its sender. These two things will have to happen in your A node. The DEALER sockets in your B nodes will have to set an identity to be distinguishable in A's ROUTER socket.

Regards,
Patrik

[1] http://api.zeromq.org/4-2:zmq-socket


On 14.02.2018 20:17, Jake wrote:
Isn't ROUTER-DEALER load balancing though?  I've used it in a REQ-ROUTER-DEALER-REP set up but in that case the REQ -> ROUTER send does not target a particular handler on the other side, it just goes to an arbitrary one and the ROUTER makes sure the reply goes back to the original sender. How would my sender (an A node) target a particular B node to receive a message?

-Jake

On Wed, Feb 14, 2018 at 12:34 PM, Justin Azoff <justin.az...@gmail.com <mailto:justin.az...@gmail.com>> wrote:

    On Wed, Feb 14, 2018 at 12:28 PM, Patrik VV. <pad...@gmail.com
    <mailto:pad...@gmail.com>> wrote:
    > Hi
    >
    > Not sure why Justin suggested using a ROUTER-Socket on each side.

    Ah yes, I misread the original message. For "one-to-many" you would
    use router-dealer.  router+router would be more for many-to-many where
    each node runs the same code and there is no obvious master node.


    --
    - Justin
    _______________________________________________
    zeromq-dev mailing list
    zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
    https://lists.zeromq.org/mailman/listinfo/zeromq-dev
    <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>




_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to