AMQP is a ridiculously over-engineered monstrosity and a saturn-sized ball on a chain for any project.
AMQP is a ridiculously over-engineered monstrosity and a saturn-sized ball on a chain for any project.
Redis is faster than BeanStalkd, a tiny message queue server written in C that uses libevent and a simple memcached-like protocol. Redis kicks ass, specially the beta versions.
People have modeled message queues with far more primitive solutions:
http://www.freeopenbook.com/php-hacks/phphks-CHP-5-SECT-18.h...
A Redis based solution might not be as elaborate as RabbitMQ, but it will be very clean and straightforward, not to mention blindingly fast, and will get the job done.
That said, I'm not really in the mood to reinvent that particular wheel myself here, but would probably give someone else's shot a try.
That said, I'd still like to see benchmarks showing Redis beating Beanstalkd. Of the two, I've only used Beanstalkd, but it's a great example of keeping things simple while still providing advanced functionality.
_
Does redis has any job queue facilities for making a reliable, low-latency, safe job queue?
http://www.rockstarprogrammer.org/post/2008/oct/04/what-matt...
It's not interesting to discuss what you can use to hack a queue together. Lots and lots of really badly thought out queue services exist today built on top of memcached or a relational database or other things that appear to work in normal cases, but can go horribly wrong and start losing data when bad things happen.
Sure, the Redis C codebase is fairly approachable. Perhaps you were suggesting adding new protocol commands?
Also, Redis is a centralized server and a single point of failure - 0MQ doesn't force you into that topology.
I've been using it for a while, and I find it to be quite simple. I send messages based on a routing key. They go to the right place, and reasonably fast (though not as fast as zeromq). What's overengineered about it?
Even one of the authors in this article admits dumb decisions like making it a binary protocol and generally making it extra-ordinarily difficult to create a working protocol endpoint. What's up with this whole XML descriptor thing...
In summary AMQP has been the most painful protocol I had the misfortune to work with since leaving java-land. (Admittedly partly because the python drivers are especially messy)