This release of amqp gem has one backwards incompatibility with respect to
several bug fixes and minor features as well as significant documentation
All users of previous 0.8.0 RCs are recommended to upgrade. Get it with
gem install amqp --pre --version "~> 0.8.0.rc13"
* 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.
* 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
* 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
* 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 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,
* 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
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
When will final 0.8.0 be released?
When all documentation guides are written, proof-read and edited. We expect
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  members.
-------------- next part --------------
An HTML attachment was scrubbed...