Skip to content

Comment on ØMQ: Mission Accomplished

Comments

0MQ looks very interesting, but most of the information available seems to be "how to use it". I can't find detailed specifications of its behavior, nor a detailed description of the implementation that I could use to figure that out myself. (Short of wading through the source code.) So it's hard to understand exactly how load balancing works, exactly what happens to in-flight messages on a server crash, exactly what guarantees are provided for message ordering (e.g. in a complex multi-participant scenario), at-least-once vs. at-most-once message delivery, etc.

Does anyone know of a good, detailed explanation of how 0MQ is implemented?

I found this, more than anything else, to help me get started with 0mq: http://api.zeromq.org/

A lot of the behavior is on a per-protocol and socket type basis, which is well documented here: http://api.zeromq.org/2-1:zmq-socket

The man reference is a good place if you want an API centric view. http://api.zeromq.org/ The guide does show "how to use it", but chapter one does a good overview of the capabilities: http://zguide.zeromq.org/page:all#Chapter-One-Basic-Stuff

As for in-flight messages and server crashes, some explanation is given in the zguide in the part about durable sockets.

And you're right that some explanation of implementation is needed. I spent a few hours digging through the code today and it's not easy to read.

You're right, the exact protocol and many other important details are undocumented. As I understand it, the "receiver down" scenario has the rather nice property of neither guaranteeing that messages will be sent or won't be sent.

http://rfc.zeromq.org/spec:15 documents the protocol ZeroMQ uses. The previous version of the protocol (used by 2.1.x) can be found here: http://rfc.zeromq.org/spec:13

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.