ØMQ (ZeroMQ)

ØMQ is a message queuing library by iMatix who developed AMQP before. ØMQ is much simpler than AMQP, it has a brokerless design, i.e. the nodes communicate directly, there's no central server that handles all the messages, however it has routers and forwarders for distributing messages in the network which could be organized in a way to form multicast trees, but there doesn't seem to be explicit support for that - so you would have to do it yourself. 0MQ provides sockets that an application can use to send/receive binary data to/from other nodes, so it has no data types like AMQP any existing format can be used over it.

The following messaging patterns can be used:

  • Request-reply, which connects a set of clients to a set of services. This is a remote procedure call and task distribution pattern.
  • Publish-subscribe, which connects a set of publishers to a set of subscribers. This is a data distribution pattern.
  • Pipeline, connects nodes in a fan-out / fan-in pattern that can have multiple steps, and loops. This is a parallel task distribution and collection pattern.
  • Exclusive pair, which connects two sockets in an exclusive pair.

The following transports are defined:

  • inproc: local in-process (inter-thread) communication transport
  • ipc: local inter-process communication transport
  • tcp: unicast transport using TCP
  • pgm, epgm: reliable multicast transport using PGM, which uses IP Multicast

For more details see the documentation.

Update: Zyre is a wi-fi P2P mesh network using 0MQ. The RFC site lists protocols defined on top of 0MQ.


<lynX> I still have difficulties understanding the point here. CurveZMQ defines how to use NaCl embedded in 0MQ, but that is the wrong way to go about it: all the transaction data remains unencrypted. FILEMQ has the coolest protocol codes in the world (ICANHAZ, ORLY, SRSLY etc) but it defines an old-fashioned one-to-one file delivery. Still everything very cloud-oriented, not multicasting and not obfuscated from observing eyes. Zyre is interesting, akin to GNUnet and Serval Mesh. But doing the mesh isn't enough to make it scale. There is a crowdfunding call to do a Zyre mesh network. I can imagine it to allow for better exchange between telephones, but it won't even scratch the surface of Facebook.