After a recent [1] announcement of what's going on with Bunny 0.9,<div>time for initial preview release and some feedback gathering.</div><div><br></div><div>0.9.0.pre1 is up on <a href="http://rubygems.org">rubygems.org</a>:</div>
<div><a href="https://rubygems.org/gems/bunny/versions/0.9.0.pre1">https://rubygems.org/gems/bunny/versions/0.9.0.pre1</a><br></div><div><br></div><div>What's in the box?</div><div><br></div><div> * All AMQP 0.9.1 features implemented</div>
<div> * Proper content framing: you now can publish empty messages and messages larger than max frame size (128K)</div><div> * "Real" support for consumers (Bunny::Queue#subscribe): Bunny no longer reimplements some RabbitMQ features in the client, now runs consumer handlers in a thread pool.</div>
<div> * All but one RabbitMQ extension to the protocol (publisher confirms) are supported, more nice features to come in the future</div><div> * Operations that block and return values in earlier releases still work the same way, however, network activity and dispatch of incoming messages (deliveries, returned messages) now happens in separate threads. This means that Rubinius and JRuby, Bunny even will now use multiple cores if available.</div>
<div><br></div><div>In addition, Bunny now uses amq-protocol under the hood so all improvements there<br></div><div>will benefit both amqp gem and Bunny.</div><div><br></div><div>Now, Bunny has always been a little scarse on documentation and this release has some</div>
<div>breaking API changes (almost all are around consumer-related functionality, so if you only</div><div>publish messages, it should be nearly completely backwards-compatible). Where to</div><div>find what the new API looks like?</div>
<div><br></div><div>The answer is in our new shiny test suite:</div><div><a href="https://github.com/ruby-amqp/bunny/tree/migrate_to_amq_protocol/spec/higher_level_api/integration">https://github.com/ruby-amqp/bunny/tree/migrate_to_amq_protocol/spec/higher_level_api/integration</a><br>
</div><div><br></div><div>And here's initial bits of the change log, which will be greatly expanded before 0.9.0 final:</div><div><a href="https://github.com/ruby-amqp/bunny/blob/migrate_to_amq_protocol/ChangeLog.md">https://github.com/ruby-amqp/bunny/blob/migrate_to_amq_protocol/ChangeLog.md</a><br>
</div><div><br></div><div>I encourage you to take a look and ideally give it a try.</div><div><br></div><div>What is left to be done:</div><div><br></div><div> * Specifics around how to handle error conditions, network splits, </div>
<div> * Graceful consumer shutdown</div><div> * Publisher confirms support with a nice API (e.g. Bunny::Exchange#publish_and_wait_for_confirmation)</div><div> * Documentation guides (we will port content and examples from <a href="http://rubyamqp.info">http://rubyamqp.info</a>)</div>
<div> * Proper change log</div><div> * HTTP API support, if time permits and there is enough interest</div><div><br></div><div>This is the first preview of several: while most of the work is done, to compensate</div><div>
for some breaking changes in this version, we will have to spend some time really</div><div>polishing and documenting it.</div><div><br></div><div>I personally really like how the new Bunny shapes up. I think it can be a better</div>
<div>RabbitMQ Ruby client than amqp gem in almost every aspect. But to make it so,</div><div>we need more input from developers like you. Please give it a try and tell us what you think!</div><div><br></div><div><br></div>
<div>1. <a href="https://groups.google.com/forum/?fromgroups=#!topic/ruby-amqp/7gxdN9xxeOE">https://groups.google.com/forum/?fromgroups=#!topic/ruby-amqp/7gxdN9xxeOE</a><br>-- <br>MK<br><br><a href="http://github.com/michaelklishin" target="_blank">http://github.com/michaelklishin</a><br>
<a href="http://twitter.com/michaelklishin" target="_blank">http://twitter.com/michaelklishin</a><br><br>
</div>