<div>The day has come: amqp gem 0.8.0 is released to <a href="http://rubygems.org">rubygems.org</a> after about 10 months in the making and 15 pre-release</div><div>versions: <a href="https://rubygems.org/gems/amqp/versions/0.8.0">https://rubygems.org/gems/amqp/versions/0.8.0</a></div>

<div><br></div><div>This release is packed with features, bug fixes, documentation guides, API usability improvements,</div><div>RabbitMQ extensions support, has solid test suite written from scratch and a lower memory footprint &amp; better</div>

<div>performance.</div><div><br></div><div><br></div><div>== Highlights</div><div><br></div><div>Starting with version 0.8.0, amqp gem implements AMQP 0.9.1 with most of RabbitMQ extensions. In addition, we resolved some long standing limitations</div>

<div>of the library:</div><div><br></div><div>* Ability to register more than one consumer per queue on the same channel. Historically AMQP:::Queue#subscribe only allowed to register one consumer.</div><div>  This is still being the case for backwards compatibility but you now can easily instantiate AMQP::Consumers directly.</div>

<div>* Empty messages are now framed properly.</div><div>* amqp gem now can use logger objects instead of printing to stdout. </div><div><br></div><div>In addition, we have many new features like</div><div><br></div><div>

* RabbitMQ extensions support.</div><div>* Channel- and connection-level exceptions now can be handled by defining callbacks on individual objects and not via catch-all AMQP.error.</div><div><br></div><div>* Automatic recovery mode that makes it very easy to re-declare all entities, bindings &amp; consumers when AMQP connection recovers from</div>

<div>  a network outage or broker failure: it is opt-in (not opt-out) and will make recovery significantly simpler for &quot;the 80%&quot; of apps.</div><div><br></div><div>* Channel ids are now allocated using bit set-based allocator and when channels are closed, allocated ids are released. Applications</div>

<div>  that open and close channels aggressively will no longer hit connection max channel limit.</div><div><br></div><div>* Broker capabilities introspection API. See <a href="http://www.rabbitmq.com/extensions.html#capabilities">http://www.rabbitmq.com/extensions.html#capabilities</a>.</div>

<div>* Support for serialization of arrays in attribute tables (for example, message headers).</div><div><br></div><div>Full list of changes and improvements can be found at <a href="http://bit.ly/amqp-gem-changelog">http://bit.ly/amqp-gem-changelog</a></div>

<div><br></div><div><br></div><div>== Documentation improvements</div><div><br></div><div>Now on to my favorite feature. Starting with this release, amqp gem has documentation guides (<a href="http://bit.ly/amqp-gem-docs">http://bit.ly/amqp-gem-docs</a>) that are edited by</div>

<div>Chris Duncan, author of the bunny gem. The guides cover a lot of ground: from introduction to AMQP Model and concepts to in-depth explanation of</div><div>various features related to exchanges, queues and bindings, to routing &amp; handling of returned messages, error handling &amp; recovery, TLS support and</div>

<div>even patterns and use cases.</div><div><br></div><div>Not all guides are considered complete at this point but now that 0.8.0 is out, we will have more time to work on them. Feedback on the documentation is</div><div>

very welcome.</div><div><br></div><div><br></div><div>== Backwards compatibility with 0.7.x</div><div><br></div><div>0.8.0 is almost completely backwards compatible with 0.7.x, although certain parts of the library were deprecated</div>

<div>and the behavior of some others has changed to be more intuitive. Learn more at <a href="http://bit.ly/amqp-gem-080-migration">http://bit.ly/amqp-gem-080-migration</a></div><div><br></div><div>One important step aside compatibility-wise is that Ruby 1.8.7-p249 (this particular release, not including other patch levels) is no</div>

<div>longer supported because of a nasty bug in that release: <a href="http://bit.ly/iONBmH">http://bit.ly/iONBmH</a>.</div><div><br></div><div>Also, since 0.8.0 implements AMQP 0.9.1 protocol, it now requires RabbitMQ 2.0 or later. See <a href="http://bit.ly/amqp-gem-and-rabbitmq-versions">http://bit.ly/amqp-gem-and-rabbitmq-versions</a> to</div>

<div>learn more.</div><div><br></div><div><br></div><div>Get 0.8.0 today with `gem install amqp` or update version requirement in your Gemfile to be &quot;~&gt; 0.8.0&quot;.</div><div><br></div><div>I hope your upgrade process will be painless. Have a good day.</div>

-- <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>