Ok, thanks for the explanation and doc reference. My A node spawns the B
nodes in the
first place, so I guess I can either (1) assign the identity out-of-band at
spawn time and
have the B use it, or (2) have B handshake once at start up to allow A to
zmq-assigned identity. After that B just receives and sends on DEALER;
sockets connected there is no load balancing on B's end. Node A uses the
to send to a particular B and to recognize which B is sending when it
receives a message.
On Wed, Feb 14, 2018 at 4:25 PM, Patrik Wenger <pad...@gmail.com> wrote:
> Hi Jake
> In fact, most ZMQ socket types do some sort of load balancing when
> connected with multiple other sockets. See , 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.
>  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
> On Wed, Feb 14, 2018 at 12:34 PM, Justin Azoff <justin.az...@gmail.com>
>> On Wed, Feb 14, 2018 at 12:28 PM, Patrik VV. <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 mailing
> zeromq-dev mailing list
zeromq-dev mailing list