48

I am looking into using ZeroMQ as the messaging/transport layer for a fairly large distributed system, mainly targeting monitoring and data collection (many producers, a few consumers).

As far as I can see there are currently two different implementations of the same concept; ZeroMQ and Crossroads I/O, the latter being a fork of ZeroMQ (in 2012?).

I am trying to figure out which one to use and wonder about the differences between them, but have so far not found much information regarding this.

For example:

  • Are they compatible on the wire?
  • Are they API compatible, i.e. some kind of common base API, possibly with different add-ons?
  • Do they both implement support for ZMTP (ZeroMQ Message Transport Protocol)?
  • Do they share some kind of common understanding of future development or will they continue in two separate and possible different directions?
  • What are the pros/cons in relation to the other?

Basically, how do one choose one over the other?

Charles
  • 50,943
  • 13
  • 104
  • 142
Jakob Möllås
  • 4,239
  • 3
  • 33
  • 61

1 Answers1

83

Crossroads.io is pretty dead since Martin Sustrik has started on a new stack, in C, called nano: https://github.com/250bpm/nanomsg

Crossroads.io does not, afaik, implement ZMTP/1.0 nor ZMTP/2.0 but its own version of the protocol.

Nano has pluggable transports and we'll probably make a ZMTP transport for that. Nano is really nice, a rethinking of the original libzmq library, and if it's successful would make a good new kernel.

Ideally, Nano would interoperate both at the API and the protocol level, so be a pluggable replacement for libzmq. It does have quite a long way to go, though.

Note that there are now several rewrites of libzmq emerging, including JeroMQ (Java) and NetMQ (C#). These two do implement ZMTP/1.0 and ZMTP/2.0 properly. There are also other libraries like Axon (https://github.com/visionmedia/axon) which are heavily inspired by 0MQ but not compatible.

Based on experience, users value interoperability more than almost anything else, so it's quite likely that different 0MQ-like stacks will end up speaking the same protocols.

Pieter Hintjens
  • 6,599
  • 1
  • 24
  • 29
  • 2
    Thanks, seems like ZeroMQ is the way forward for now. It is good to know that other compatible implementations are popping up - this looks really promising for the future! – Jakob Möllås Nov 24 '12 at 16:40
  • 4
    Yes, I think the key is lots of alternatives that speak the same protocols and offer similar APIs and messaging patterns. – Pieter Hintjens Nov 25 '12 at 07:00
  • 3
    Users value interoperability, sure, but stability, reliability and long term support even more so. If we look at AMQP->ZeroMQ->Crossroads.IO->Nano, I wouldn't bet on nano being the last, stable version. – MSalters May 14 '14 at 11:30