IMatix: AMQP ‘fundamentally flawed’
lists.openamq.org
lists.openamq.org
1) It's a messaging library, and not a server.
2) It has no persistence.
The lisp binding (cl-zmq) is specially attractive, but I ended up using Redis since I knew it well anyway.
Isn't persistence achieved when you use a Broker architecture, which is supported by ZeroMQ?
I tried getting OpenAMQ up and running about a year ago but it was like pulling teeth. On the other hand, I got RabbitMQ installed and working in almost no time at all so I don't think the AMQP standard is what's getting in the way of building a quality messaging product. 0MQ was still in pre-alpha with nothing available to download at the time so it wasn't even possible to use it. It's nice to see that the project delivered something useful.
ZeroMQ looks good, but if anyone else has found themselves wanting to shop around, these detailed message queue evaluation notes from the folks at Second Life may be worth a look: http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Not...
However, I do agree that its concepts are somewhat convoluted for a new user, it took me quite a bit of digging to get the basics of what an exchange/queue was and what bindings mean, etc.
However, 0MQ looks attractive but simply doesn't have what's needed for a complex project that spans languages, platforms, and usages beyond the basic pub-sub.
I would compare both protocols as XML vs. JSON, whereas XML may be tedious but it's absolutely necessary for some cases, specially where tight specifications are needed.
Is this fallout from not being able to make that work?
They should have realized they already failed when they allocated 20 people just do work on the protocol specification. This is another example of a design by committee done by a large enterprise vendor and how it results in a a bloated, inefficient and overly complicated specification.
All 20 people feel the need to justify their time by adding more crap and features to the design. Usually no matter how simple or complicated the actual protocol needs to be, its specification will always be proportional to the number of people * time assigned to work on it.
While I too would like to see AMQP 1.0 rather sooner than later and despite the open standard there are only a few usable implementations, I doubt that this new and great wire protocol will solve all of AMQPs problems which are located in other areas.
For anyone who wants to improve their C hacking, I highly recommend the SFL (Imatix's Standard Function Library): purtiest code you have ever seen.
Several times in my life I thought of sending an unsolicited resume to you guys, but always doubted I had what it takes.
btw, did you know your documentation [1] has bad links for point_in_rec ? All links I've found link to mem_alloc.
This is the metaprogramming we used to build OpenAMQ. It was very successful in technology terms (1M lines of real code generated from 20k lines of metacode) but a failure in social tems (too high a barrier to community participation).
1) The best is a healthy number of implementations based on an open source specification;
2) The undesirable way is having a implemantations based on an API, namely JMS;
3) The lowest most undesirable way is having an implementation as industry standard, as this allows for vendor lockins, soaring prices, and tardy performance;
Having said that, ØMQ is an implementation (albeit fast and open) without an open specification , nevertheless, you are essentially basing your business on number 3. an implementation as industry standard (given that what you do, industry will follow). Secondly with your influential clout in this field, are you not pushing an implementation into the market as the next industry standard -> whereas it should ideally be an open spec?
Aside, what high performance (which excludes restms) substitute spec are you cooking up? Is there a slight possibility that you will reverse engineer the spec from ØMQ?
We do intend to deliver IETF-quality specs that turn messaging patterns like pubsub into 1st class citizens of the Internet, so that arbitrary vendors can produce pieces that plug into this. But these specs will still be really simple.
I've always advocated a standard API for AMQP and proposed one (WireAPI) years ago, because this reduces vendor capture. Imagine if vendors designed arbitrary socket APIs... well some do, and it locks their users in.
So 0MQ is partly an API standardization project, partly an architecture project (to build a layer that seems to be missing from the stack), and partly a protocol specification project.
Crikey, it really doesn't get much more simple than that! http://rfc.zeromq.org/
Simple framing is described here:
http://api.zeromq.org/zmq_tcp.html
Extension of the framing for multicast:
We've waited 6 years for AMQP to develop a community and address basic issues such as its complexity and high cost of change. No progress... despite years (literally) of work to try to open the AMQP workgroup to wider participation.
We love the idea of open messaging protocols and invested a painfully huge amount in AMQP but it's not been worthwhile: almost as soon as we helped found the AMQP working group, the protocol was hijacked into something complex and untenable.
At iMatix we believe in simple, clean, fast software. Just run any AMQP broker and compare to 0MQ and the conclusion is clear: 0MQ wins, hands down.
0MQ still has a long way to go but it's totally open, and anyone with a good idea is welcome to contribute. No contracts to sign. Just join the mailing list and discuss.
We will make messaging patterns into 1st class citizens of the Internet.