iMatix, which makes 0MQ, also designed the core of AMQP as it is exists today and makes
OpenAMQ, the first AMQP implementation. So we're well aware of the overlap and competition
between 0MQ and AMQP. AMQP is a very nice message routing and queering abstraction, derived
from JMS. There are many others, and if you look at RestMS (http://www.restms.org), another of
our works, you'll see some alternative views.
Basically, 0MQ is a low-latency data center fabric, AMQP is an enterprise fabric, and RestMS is a
internet-scale fabric. There is overlap but they are complementary. You can never imagine doing
4M messages a second over AMQP, it's just way too heavy. But 0MQ has no semantics for inter-
broker federation, such as OpenAMQ has. Likewise, neither 0MQ nor AMQP works on Internet
scales, where RESTful principles become more important than immediate performance.
Mainly, AMQP is too complex. The reasons are detailed and historical and I take responsibility for
many of the design decisions, such as using binary framing for control commands. The effort
needed to make a client stack is too heavy.
AMQP also ignores the principles that make for successful Internet protocols. Architectural ones,
such as REST but also established practice such as making many small RFCs, not a single huge
one.
Having said this, AMQP works very well indeed inside the enterprise, where we've used it for
many projects. It solves a certain class of messaging problem very nicely. There are many
classes of messaging problem. As I said, AMQP basically sits in the JMS space. You would not
use JMS across the Internet.
Hope this helps.
0MQ: A new approach to messaging
Posted Jan 24, 2010 7:33 UTC (Sun) by zooko (subscriber, #2589)
[Link]
Thanks for the answers and the links!
0MQ: A new approach to messaging
Posted Jan 28, 2010 20:45 UTC (Thu) by z8000 (guest, #63250)
[Link]
Why is 0MQ not appropriate at "Internet scales" (and I presume "should" be relegated to LANs)?
Perhaps I don't fully grok what you mean by "Internet scale" (WAN?).
I ask because (1) it looks great for a general transport at any "scale" and (2) the article itself
discusses a scenario in which 0MQ could be used over a WAN (branch offices, the forwarder, etc.).