[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