[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
RC12,
several bug fixes and minor features as well as significant documentation
improvements
(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
URL-encode
   them. With this change, connection URIs use the same conventions other
AMQP
   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
and
   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
   correctly.


Minor features and API usability improvements
================================================================================

 * AMQP::Session#on_error lets applications handle connection-level
exceptions.
   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
people
   expect it to work.

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

 * AMQP::Queue#initialize and AMQP::Channel#queue will now raise
ArgumentError
   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
that
   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
applications,
   should they need to.

 * AMQP::Session#send was renamed to #send_frame and will never conflict
with
   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
acknowledgements
 * 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,
connection-
   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:
https://github.com/ruby-amqp/amqp/compare/cd76e8c41d55...bd6125f738


What to expect in RC14 and RC15
================================================================================

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

Of course, both releases will feature documentation improvements to extent
the
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
Twitter.


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


ruby-amqp team [1] members.

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

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