[zeromq-dev] error in the guide?

Chuck Remes cremes.devlist at mac.com
Tue Jan 24 01:22:06 CET 2012


On Jan 23, 2012, at 6:01 PM, Lucas Hope wrote:

> Hi Chuck,
> 
> I think the only requirement for a null message is for a REP/REQ socket. Those are the sockets that (I think) mandate the null delimiter for the envelope part.
> 
> In this example, there are no intermediate devices between the router and the workers, and so the number of envelopes is 1, and hence there is no need to delimit - since the workers are dealers.
> 
> I do think this is bad coding style in the examples, and it caused me confusion when I first started using ZMQ.

A DEALER socket is a synonym for XREQ and a ROUTER socket is a synonym for XREP. The REQ & REP sockets are built on top of those other types. When sending data from a REQ to a ROUTER socket, for example, you will see that the ROUTER socket receives the message as IDENTITY + NUL part + payload. The NUL part is a requirement for routing via intermediate devices. Eliminating that NUL part may work for directly connected sockets, but the routing will very likely break if there are any intermediate sockets (like a QUEUE device). If it works without the NUL part, then it's probably just luck and we shouldn't count on it working in the future.

This page (http://www.zeromq.org/tutorials:xreq-and-xrep) that I wrote many moons ago came about from my investigation into how all of these things work. As far as I know, that page is correct for libzmq 2.x and 3.1.x.

I think the guide should be fixed.

cr





More information about the zeromq-dev mailing list