[rabbitmq-discuss] What's going on with Bunny (a Ruby RabbitMQ client)
Michael Klishin
michael.s.klishin at gmail.com
Wed Nov 21 17:14:31 GMT 2012
Back in July I announced [1] that Bunny needs a serious revamp to stay
relevant. The effort did get off the ground but then in August I got
busy with other things and there were no updates till early November.
Now I am actively working on Bunny again and decided it's time to
share what's going on with the community.
All the work is going on in the same repository on a branch [2]. Some
of the goals are:
* Preserve the reason why people use Bunny: it is dead easy to use, has no
dependencies and about as easy to get started as it gets
* Make it feature complete, on par with amqp gem
* Make it support RabbitMQ extensions and new 3.0 features
* Give it a good test suite, add it to ACITS [3]
* Port documentation from http://rubyamqp.info (I am not fond of
recommending undocumented libraries)
Some minor goals:
* Make network activity happen in a separate thread (or even more than
one) to avoid the biggest amqp gem issue: user code blocking the event loop
* Get rid of some bad decisions that make adding new features to the
current version nearly impossible.
* Make it suitable for developing sane consumer apps (right now Bunny is
primarily used for publishing from Web apps)
* Share some code with amqp gem
* Add RabbitMQ HTTP API support
As you can image, it won't be a completely 100% backwards-compatible
release but most apps won't require serious modifications
and when I change things, it is to do "the right thing" over keeping
bad ideas around forever.
What already works:
* Core networking and concurrency parts. This is very similar in design to
how RabbitMQ Java client works under the hood.
* Connection, authentication
* channel.* operations
* queue.* operations
* exchange.* operations
* basic.publish, basic.get, basic.qos
* New "low-level" API that mimics RabbitMQ Java client's Channel interface
and Pika. Everything else is built around it.
I am working on implementing basic.consume, basic.cancel, basic.deliver,
basic.return and everything around
consumers and the "push API". When that is done, I will cut
a first alpha/pre release. After that, there will be a lot of
[design] work for error handling/recovery. Potential
concurrency improvements and stress testing also will take a while.
If you want to see a feature in Bunny, now is the time to tell about it.
It is dead easy to add reasonable features now. I believe that
Bunny can be as good as or better than amqp gem in almost
every aspect. Help me make that happen.
Thank you.
1. https://groups.google.com/forum/?fromgroups=#!topic/ruby-amqp/crNVGEuHm68
2. https://github.com/ruby-amqp/bunny/commits/migrate_to_amq_protocol
3. https://github.com/michaelklishin/acits
--
MK
http://github.com/michaelklishin
http://twitter.com/michaelklishin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20121121/8cada27c/attachment.htm>
More information about the rabbitmq-discuss
mailing list