On Fri, Feb 23, 2018, at 4:53 PM, Mark via zeromq-dev wrote:
> As I mentioned previously the docs on REQ/REP state:
> 
>    "If no services are available, then any send operation on the
>     socket shall block until at least one service becomes available."
> 
> but the send() doesn't block in this situation. As you said earlier
> the message is queued and sent async with send() returning to the
> caller.
> 
> I also mis-interpreted the docs to imply that when "at least one
> service becomes available" that any queued messages would go to that
> service, but that's not the case as the round-robin decision is only
> made once on the call to send() - not during the async sending
> process.
> 
> Anyhoo, it's all good now that I know better.

Yeah one thing that got me when I started out with ZeroMQ is understanding that 
queues only exist in the context of known peers, and that a zmq socket doesn't 
have a master queue or anything that exists in the absence of known peers. This 
is why writing to a socket that is binding but has no peers will block.

I say "known peers" rather than "peer connections" because you get a queue once 
you attempt to connect to a peer, even if that connection is not yet 
established.

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

Reply via email to