highly encouraged to upgrade.
== Backwards compatibility with RC13
0.8.0.RC14 is fully backwards compatible with RC13 but amq-client library
will need an upgrade to the 0.8.0 (which is already available from
rubygems.org). When upgrading, make
sure to update your Gemfile or .gemspec dependency on amq-client if
To check that you have RC14 installed, you can use irb and check
If you have questions about upgrading, join #rabbitmq IRC channel on
freenode.net and I (antares_) will
be happy to answer them.
0.8.0.RC14 introduces a number of exciting features related to application
recovery from network & broker failures:
* A number of events/callbacks and API methods useful to developers who want
to implement their own recovery strategies.
* 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.
Documentation of these features is available at
== Bug fixes
RC14 includes two bug fixes:
* Empty messages are now framed properly. Yes, it took us 3 years to get
* Sporadic UNEXPECTED_FRAME exceptions in multi-threaded publisher apps are
now gone. AMQP::Exchange#publish now internally synchronizes data delivery
on the channel exchange is associated with.
This makes sure that even if you end up publishing from multiple threads,
frames will be delivered in the proper order.
== Other features & API usability improvements
There are also other improvements:
* RC14 no longer has pre-release gem dependencies. This should make life
easier for RubyGems 1.3.7 users (this includes those running on Heroku).
RubyGems 1.3.7, also know as "the Internet Explorer 6 of the Ruby
ecosystem", has broken pre-release version comparison and considers
version 0.8.0.rc9 to be more recent than 0.8.0.rc14, for example.
* 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.
* New bitset-based channel id allocator. Previously apps that open & close
channels aggressively could hit connection max channel limit
pretty quickly because channel id was a growing integer. Now channel id
are allocated from a pool of integers, just as in the RabbitMQ Java client.
* Broker capabilities introspection API. See
* Support for arrays in attribute tables (for example, message headers)
== Documentation improvements
As usual, we keep improving my favorite amqp gem feature: documentation (
* Documentation is now being proof-read and edited by Chris Duncan, the
creator of the bunny gem.
* AMQP 0.9.1 Mode Explained guide (http://bit.ly/amqp-model-explained) is
about 2 pages long and explains AMQP 0.9.1 concepts & features in simple
language. If you were
looking for something between shallow blog posts about AMQP and reading
the whole spec document, this guide is for you.
* Initial bits of the Migration guide 0.6.x and 0.7.x to 0.8.x (
* Initial bits of the Patterns & Use Cases guide (
http://bit.ly/amqp-gem-patterns) that explains how to implement many
patterns from the Enterprise Integration Patterns book (
* TLS guide
* Numerous small improvements to all other guides & code examples.
== The Road to 0.8.0
Many people have expressed their interest in knowing when 0.8.0 is going to
be out. Lets get this out of the way.
RC14 is the second to last RC before 0.8.0. Here's what to expect in RC15:
* RC15 will bring up support for Ruby 1.8.7-p249 (this particular patch
level) that has a bug that seriously affects amqp gem.
Working around it will take a moderate refactoring on our side. Learn more
in the FAQ at the bottom of
* RC15 will see many documentation improvements. We will finish 0.6.x/0.7.x
=> 0.8.x migration guide, RabbitMQ extensions guide, Bindings guide and
expand Patterns & Use Cases guide.
Existing documentation is pretty good but certainly can be improved &
* RC15 will involve heavy QA and interoperability test suite with the
RabbitMQ Java client and Pika, the most popular Python client. Many people
have been using amqp gem 0.8.0.RCs with those two for quite some time but
there is no such thing as "too much QA".
After that, there will be only bug fixes and documentation corrections, as
needed. All the other ideas/feature requests are put in the queue for
So, give RC14 a spin and have a good day.
-------------- next part --------------
An HTML attachment was scrubbed...