[rabbitmq-discuss] [announcement] amqp gem 0.8.0 final is released

Michael Klishin michael.s.klishin at gmail.com
Sun Sep 4 14:47:05 BST 2011


The day has come: amqp gem 0.8.0 is released to rubygems.org after about 10
months in the making and 15 pre-release
versions: https://rubygems.org/gems/amqp/versions/0.8.0

This release is packed with features, bug fixes, documentation guides, API
usability improvements,
RabbitMQ extensions support, has solid test suite written from scratch and a
lower memory footprint & better
performance.


== Highlights

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
of the library:

* Ability to register more than one consumer per queue on the same channel.
Historically AMQP:::Queue#subscribe only allowed to register one consumer.
  This is still being the case for backwards compatibility but you now can
easily instantiate AMQP::Consumers directly.
* Empty messages are now framed properly.
* amqp gem now can use logger objects instead of printing to stdout.

In addition, we have many new features like

* RabbitMQ extensions support.
* Channel- and connection-level exceptions now can be handled by defining
callbacks on individual objects and not via catch-all AMQP.error.

* Automatic recovery mode that makes it very easy to re-declare all
entities, bindings & consumers when AMQP connection recovers from
  a network outage or broker failure: it is opt-in (not opt-out) and will
make recovery significantly simpler for "the 80%" of apps.

* Channel ids are now allocated using bit set-based allocator and when
channels are closed, allocated ids are released. Applications
  that open and close channels aggressively will no longer hit connection
max channel limit.

* Broker capabilities introspection API. See
http://www.rabbitmq.com/extensions.html#capabilities.
* Support for serialization of arrays in attribute tables (for example,
message headers).

Full list of changes and improvements can be found at
http://bit.ly/amqp-gem-changelog


== Documentation improvements

Now on to my favorite feature. Starting with this release, amqp gem has
documentation guides (http://bit.ly/amqp-gem-docs) that are edited by
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
various features related to exchanges, queues and bindings, to routing &
handling of returned messages, error handling & recovery, TLS support and
even patterns and use cases.

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
very welcome.


== Backwards compatibility with 0.7.x

0.8.0 is almost completely backwards compatible with 0.7.x, although certain
parts of the library were deprecated
and the behavior of some others has changed to be more intuitive. Learn more
at http://bit.ly/amqp-gem-080-migration

One important step aside compatibility-wise is that Ruby 1.8.7-p249 (this
particular release, not including other patch levels) is no
longer supported because of a nasty bug in that release:
http://bit.ly/iONBmH.

Also, since 0.8.0 implements AMQP 0.9.1 protocol, it now requires RabbitMQ
2.0 or later. See http://bit.ly/amqp-gem-and-rabbitmq-versions to
learn more.


Get 0.8.0 today with `gem install amqp` or update version requirement in
your Gemfile to be "~> 0.8.0".

I hope your upgrade process will be painless. Have a good day.
-- 
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/20110904/8ded4467/attachment.htm>


More information about the rabbitmq-discuss mailing list