<div>amqp gem 0.8.0.RC14 is released to <a href="http://rubygems.org">rubygems.org</a>. All 0.8.0.RCs users are highly encouraged to upgrade.</div><div><br></div><div>== Backwards compatibility with RC13</div><div><br></div>

<div>0.8.0.RC14 is fully backwards compatible with RC13 but amq-client library</div><div>will need an upgrade to the 0.8.0 (which is already available from <a href="http://rubygems.org">rubygems.org</a>). When upgrading, make</div>

<div>sure to update your Gemfile or .gemspec dependency on amq-client if necessary.</div><div><br></div><div>To check that you have RC14 installed, you can use irb and check AMQP::VERSION constant.</div><div><br></div><div>

If you have questions about upgrading, join #rabbitmq IRC channel on <a href="http://freenode.net">freenode.net</a> and I (antares_) will</div><div>be happy to answer them.</div><div><br></div><div><br></div><div>== Highlights</div>

<div><br></div><div>0.8.0.RC14 introduces a number of exciting features related to application recovery from network &amp; broker failures:</div><div><br></div><div>* A number of events/callbacks and API methods useful to developers who want to implement their own recovery strategies.</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>Documentation of these features is available at <a href="http://bit.ly/amqp-gem-error-handling-and-recovery">http://bit.ly/amqp-gem-error-handling-and-recovery</a></div><div><br></div><div><br></div><div>

<br></div><div>== Bug fixes</div><div><br></div><div>RC14 includes two bug fixes:</div><div><br></div><div>* Empty messages are now framed properly. Yes, it took us 3 years to get this right.</div><div>* Sporadic UNEXPECTED_FRAME exceptions in multi-threaded publisher apps are now gone. AMQP::Exchange#publish now internally synchronizes data delivery</div>

<div>  on the channel exchange is associated with.</div><div>  This makes sure that even if you end up publishing from multiple threads, frames will be delivered in the proper order.</div><div><br></div><div><br></div><div>

<br></div><div>== Other features &amp; API usability improvements</div><div><br></div><div>There are also other improvements:</div><div><br></div><div>* 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).</div>

<div>   RubyGems 1.3.7, also know as &quot;the Internet Explorer 6 of the Ruby ecosystem&quot;, has broken pre-release version comparison and considers</div><div>   version 0.8.0.rc9 to be more recent than 0.8.0.rc14, for example.</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><br></div><div>* New bitset-based channel id allocator. Previously apps that open &amp; close channels aggressively could hit connection max channel limit</div><div>  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.</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 arrays in attribute tables (for example, message headers)</div>

<div><br></div><div><br></div><div><br></div><div>== Documentation improvements</div><div><br></div><div>As usual, we keep improving my favorite amqp gem feature: documentation (<a href="http://bit.ly/amqp-gem-docs">http://bit.ly/amqp-gem-docs</a>).</div>

<div><br></div><div>* Documentation is now being proof-read and edited by Chris Duncan, the creator of the bunny gem.</div><div>* AMQP 0.9.1 Mode Explained guide (<a href="http://bit.ly/amqp-model-explained">http://bit.ly/amqp-model-explained</a>) is about 2 pages long and explains AMQP 0.9.1 concepts &amp; features in simple language. If you were</div>

<div>  looking for something between shallow blog posts about AMQP and reading the whole spec document, this guide is for you.</div><div>* Initial bits of the Migration guide 0.6.x and 0.7.x to 0.8.x (<a href="http://bit.ly/amqp-gem-080-migration-guide">http://bit.ly/amqp-gem-080-migration-guide</a>)</div>

<div>* Initial bits of the Patterns &amp; Use Cases guide (<a href="http://bit.ly/amqp-gem-patterns">http://bit.ly/amqp-gem-patterns</a>) that explains how to implement many patterns from the Enterprise Integration Patterns book (<a href="http://www.eaipatterns.com">http://www.eaipatterns.com</a>)</div>

<div>* TLS guide</div><div>* Numerous small improvements to all other guides &amp; code examples.</div><div><br></div><div><br></div><div>== The Road to 0.8.0</div><div><br></div><div>Many people have expressed their interest in knowing when 0.8.0 is going to be out. Lets get this out of the way.</div>

<div><br></div><div>RC14 is the second to last RC before 0.8.0. Here&#39;s what to expect in RC15:</div><div><br></div><div>* RC15 will bring up support for Ruby 1.8.7-p249 (this particular patch level) that has a bug that seriously affects amqp gem.</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>Working around it will take a moderate refactoring on our side. Learn more in the FAQ at the bottom of <a href="https://github.com/ruby-amqp/amqp/blob/master/README.md">https://github.com/ruby-amqp/amqp/blob/master/README.md</a></div>

<div><br></div><div>* RC15 will see many documentation improvements. We will finish 0.6.x/0.7.x =&gt; 0.8.x migration guide, RabbitMQ extensions guide, Bindings guide and expand Patterns &amp; Use Cases guide.</div><div>
<span class="Apple-tab-span" style="white-space:pre">        </span>Existing documentation is pretty good but certainly can be improved &amp; expanded.</div>
<div><br></div><div>* RC15 will involve heavy QA and interoperability test suite with the RabbitMQ Java client and Pika, the most popular Python client. Many people (including myself)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>have been using amqp gem 0.8.0.RCs with those two for quite some time but there is no such thing as &quot;too much QA&quot;.</div>

<div><br></div><div>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 v0.9.0.</div><div><br></div><div>So, give RC14 a spin and have a good day.</div>

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