[rabbitmq-discuss] Ruby AMQP gem 0.8.0.rc13 is released

Michael Klishin michael.s.klishin at gmail.com
Sat Jun 4 19:11:17 BST 2011

Ruby AMQP gem 0.8.0.rc13 is released.

This release of amqp gem has one backwards incompatibility with respect to
several bug fixes and minor features as well as significant documentation
(mostly guides).

All users of previous 0.8.0 RCs are recommended to upgrade. Get it with

gem install amqp --pre --version "~> 0.8.0.rc13"

Backwards-incompatible change

 * AMQP connection URIs that use slashes (/) in vhost names now must
   them. With this change, connection URIs use the same conventions other
   ecosystem projects use instead of inventing our own thing.

   Documentation: http://bit.ly/mfzwcB. Note that apps that use hashes for
   connection (:host => "hub.megacorp.internal", :vhost => "production") are
   not affected by this change.

Bug fixes

 * AMQP::Exchange#publish callback is no longer double-fired when message is
   published before asynchronous channel opening succeeds.

 * When AMQ entities are declared multiple times using AMQP::Channel#queue
   related methods, callback will be fired on 2nd, 3rd and subsequent
   declarations even though object is taken from channel cache.

 * When broker uses error messages longer than 127 characters,
   AMQ::Protocol::Channel::Close#class_id and #method_id are now decoded

Minor features and API usability improvements

 * AMQP::Session#on_error lets applications handle connection-level
   Example: http://bit.ly/maZmEv

 * AMQP::Exchange#publish callback is now run on the next event loop tick.
   This still DOES NOT OFFER ANY GUARANTEES that it is fired "after data is
   sent" (because system calls EventMachine core relies on use buffering),
   but is safe enough for 80% of the applications and works the way most
   expect it to work.

 * Message header values now can be floats, too. Since Ruby floats are
   precision, Java client will unpack them as `double`.

 * AMQP::Queue#initialize and AMQP::Channel#queue will now raise
   if queue name is given as `nil` instead of an empty string (for
server-named queues).

 * When declaring a server-named queue, AMQP::Queue will now better check
   arguments actually make sense (for example, :nowait doesn't make sense
   because we need to receive generated name from the broker).

 * Connection (AMQP::Session) now exposes #server_capabilities,
   #server_authentication_mechanisms and #server_locales methods.

 * AMQP::Channel#reset was originally meant to be used by the library itself
   to handle network connectivity issues but is now safe to use by
   should they need to.

 * AMQP::Session#send was renamed to #send_frame and will never conflict
   Ruby's Object#send on 1.8.7, even in the edgiest of cases.

Documentation improvements

Documentation guides improved a great deal, we can't possibly name all the
improvements. Some highlights are

 * Installation routine specific to Windows 7 on C Rubies
 * Integration with applications that run on Unicorn
 * Typical queue lifecycle patterns
 * Message acknowledgements, redelivery, rejection and negative
 * Consumer exclusivity
 * QoS and message pre-fetching
 * Fetching messages on demand ("pull API" with basic.get)
 * Exchanges and queues durability, message persistence and related matters

Documentation is at http://bit.ly/amqp-gem-docs

Newly added examples cover

 * Error handling (network connection failure, channel-level exceptions,
   level exceptions)
 * Accessible message metadata (aka envelope)
 * Message acknowledgements & redelivery
 * Handling of returned messages
 * RabbitMQ AMQP extensions

Examples are at http://bit.ly/amq-gem-examples

Git commit list

Commit list:

What to expect in RC14 and RC15

RC14 will be focused on further improving error handling after network
RC15 will bring support for Ruby 1.8.7-p249 (this specific patch level)

Of course, both releases will feature documentation improvements to extent
time permits.

When will final 0.8.0 be released?

When all documentation guides are written, proof-read and edited. We expect
it to
take between 1 and 2 months.

Follow @rubyamqp for updates

For updates on the state of Ruby AMQP ecosystem, follow @rubyamqp on

Thanks to everyone who contributed feedback and reported all the edge cases
API usability issues, especially Elias Levy, Jonathan Simms and Mark

ruby-amqp team [1] members.

1. https://github.com/ruby-amqp

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110604/aede3e3d/attachment.htm>

More information about the rabbitmq-discuss mailing list