<div>Ruby AMQP gem 0.8.0.rc13 is released.</div><div><br></div><div>This release of amqp gem has one backwards incompatibility with respect to RC12,</div><div>several bug fixes and minor features as well as significant documentation improvements</div>
<div>(mostly guides).</div><div><br></div><div>All users of previous 0.8.0 RCs are recommended to upgrade. Get it with</div><div><br></div><div>gem install amqp --pre --version "~> 0.8.0.rc13"</div><div><br>
</div>
<div><br></div><div>Backwards-incompatible change</div><div>================================================================================</div><div><br></div><div> * AMQP connection URIs that use slashes (/) in vhost names now must URL-encode</div>
<div> them. With this change, connection URIs use the same conventions other AMQP</div><div> ecosystem projects use instead of inventing our own thing.</div><div><br></div><div> Documentation: <a href="http://bit.ly/mfzwcB">http://bit.ly/mfzwcB</a>. Note that apps that use hashes for</div>
<div> connection (:host => "hub.megacorp.internal", :vhost => "production") are</div><div> not affected by this change.</div><div><br></div><div><br></div><div>Bug fixes</div><div>================================================================================</div>
<div><br></div><div> * AMQP::Exchange#publish callback is no longer double-fired when message is</div><div> published before asynchronous channel opening succeeds.</div><div><br></div><div> * When AMQ entities are declared multiple times using AMQP::Channel#queue and</div>
<div> related methods, callback will be fired on 2nd, 3rd and subsequent</div><div> declarations even though object is taken from channel cache.</div><div><br></div><div> * When broker uses error messages longer than 127 characters,</div>
<div> AMQ::Protocol::Channel::Close#class_id and #method_id are now decoded</div><div> correctly.</div><div><br></div><div><br></div><div>Minor features and API usability improvements</div><div>================================================================================</div>
<div><br></div><div> * AMQP::Session#on_error lets applications handle connection-level exceptions.</div><div> Example: <a href="http://bit.ly/maZmEv">http://bit.ly/maZmEv</a></div><div><br></div><div> * AMQP::Exchange#publish callback is now run on the next event loop tick.</div>
<div> This still DOES NOT OFFER ANY GUARANTEES that it is fired "after data is</div><div> sent" (because system calls EventMachine core relies on use buffering),</div><div> but is safe enough for 80% of the applications and works the way most people</div>
<div> expect it to work.</div><div><br></div><div> * Message header values now can be floats, too. Since Ruby floats are double</div><div> precision, Java client will unpack them as `double`.</div><div><br></div><div>
* AMQP::Queue#initialize and AMQP::Channel#queue will now raise ArgumentError</div><div> if queue name is given as `nil` instead of an empty string (for server-named queues).</div><div><br></div><div> * When declaring a server-named queue, AMQP::Queue will now better check that</div>
<div> arguments actually make sense (for example, :nowait doesn't make sense</div><div> because we need to receive generated name from the broker).</div><div><br></div><div> * Connection (AMQP::Session) now exposes #server_capabilities,</div>
<div> #server_authentication_mechanisms and #server_locales methods.</div><div><br></div><div> * AMQP::Channel#reset was originally meant to be used by the library itself</div><div> to handle network connectivity issues but is now safe to use by applications,</div>
<div> should they need to.</div><div><br></div><div> * AMQP::Session#send was renamed to #send_frame and will never conflict with</div><div> Ruby's Object#send on 1.8.7, even in the edgiest of cases.</div><div><br>
</div><div><br></div><div>Documentation improvements</div><div>================================================================================</div><div><br></div><div>Documentation guides improved a great deal, we can't possibly name all the</div>
<div>improvements. Some highlights are</div><div><br></div><div> * Installation routine specific to Windows 7 on C Rubies</div><div> * Integration with applications that run on Unicorn</div><div> * Typical queue lifecycle patterns</div>
<div> * Message acknowledgements, redelivery, rejection and negative acknowledgements</div><div> * Consumer exclusivity</div><div> * QoS and message pre-fetching</div><div> * Fetching messages on demand ("pull API" with basic.get)</div>
<div> * Exchanges and queues durability, message persistence and related matters</div><div><br></div><div>Documentation is at <a href="http://bit.ly/amqp-gem-docs">http://bit.ly/amqp-gem-docs</a></div><div><br></div><div>
<br></div><div>Newly added examples cover</div><div><br></div><div> * Error handling (network connection failure, channel-level exceptions, connection-</div><div> level exceptions)</div><div> * Accessible message metadata (aka envelope)</div>
<div> * Message acknowledgements & redelivery</div><div> * Handling of returned messages</div><div> * RabbitMQ AMQP extensions</div><div><br></div><div>Examples are at <a href="http://bit.ly/amq-gem-examples">http://bit.ly/amq-gem-examples</a></div>
<div><br></div><div><br></div><div><br></div><div>Git commit list</div><div>================================================================================</div><div><br></div><div>Commit list: <a href="https://github.com/ruby-amqp/amqp/compare/cd76e8c41d55...bd6125f738">https://github.com/ruby-amqp/amqp/compare/cd76e8c41d55...bd6125f738</a></div>
<div><br></div><div><br></div><div>What to expect in RC14 and RC15</div><div>================================================================================</div><div><br></div><div>RC14 will be focused on further improving error handling after network failures.</div>
<div>RC15 will bring support for Ruby 1.8.7-p249 (this specific patch level) back.</div><div><br></div><div>Of course, both releases will feature documentation improvements to extent the</div><div>time permits.</div><div>
<br></div><div><br></div><div>When will final 0.8.0 be released?</div><div>================================================================================</div><div><br></div><div>When all documentation guides are written, proof-read and edited. We expect it to</div>
<div>take between 1 and 2 months.</div><div><br></div><div><br></div><div>Follow @rubyamqp for updates</div><div>================================================================================</div><div><br></div><div>For updates on the state of Ruby AMQP ecosystem, follow @rubyamqp on Twitter.</div>
<div><br></div><div><br></div><div>Thanks to everyone who contributed feedback and reported all the edge cases and</div><div>API usability issues, especially Elias Levy, Jonathan Simms and Mark Abramov.</div><div><br></div>
<div><br></div><div>ruby-amqp team [1] members.</div><div><br></div><div>1. <a href="https://github.com/ruby-amqp">https://github.com/ruby-amqp</a></div><br>-- <br>MK<br>