[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