[rabbitmq-discuss] [announce] amqp gem 0.8.0.rc3 is released — please help us test this RC!

Michael Klishin michael.s.klishin at gmail.com
Fri Apr 29 22:41:03 BST 2011

Third pre-release version of amqp gem 0.8.0 is now available from
Please help us test this RC!

Get it with

  gem install amqp --pre

and try using it as a drop-in replacement for 0.6 or 0.7. If you encounter
any issues, please post them
to https://github.com/ruby-amqp/amqp/issues. [Constantly improving]
documentation is up at http://bit.ly/lQP1Al.

== Highlights

* amqp gem now implements version 0.9.1 of AMQP. This alone brings several
new features.
* Support for several RabbitMQ-specific AMQP 0.9.1 extensions [1]
* many existing methods are refined and updated to be consistent with other
methods in the library
* there is now clear line between what is part of public gem API and what is
a subject to change
* significant documentation improvements
* significant improvements to network and protocol error handling methods
available as part of the API
* performance & memory usage improvements (and this a lot of room to improve
* test suite with plenty of integration examples that use AMQP broker

== Changes since RC1 and RC2

* TLS (aka SSL) support is back
* Error handling: connection failures, connection loss, channel- and
connection-level exceptions
* One minor bug fix
* Minor 0.7.x compatibility fixes

== Backwards compatibility

This release introduces many features
and API improvements but also tries to be as backwards-compatible as
possible. Unfortunately,
as with many Ruby gems, amqp 0.7.x and earlier did not clealry draw the line
between what
other libraries and applications can use and what is an implementation
detail. That's why we don't
claim to be 100% backwards-compatible but went extra miles to make sure even
methods/features/use cases of key classes work as before.

== Before you upgrade: check your broker version

Because of a switch to AMQP 0.9.1, before you upgrade make sure to check
what version of RabbitMQ
you are running. Even most recent released versions of Ubuntu and Debian
still ship with versions as old as
1.7.2 and 1.8.0. 1.7.2 does not support AMQP 0.9.1 and thus won't work with
amqp gem 0.8.0.

We are now in the process of writing documentation guides, tutorials and
adding even more examples.
If necessary, there will be one or more RC releases before final 0.8.0.

Below is brief changelog for this release. We hope you have a smooth

= Version 0.8.0

  * [FEATURE] AMQP 0.9.1 support, including tx.* operations class.
  * [API] AMQP::Channel#initialize now takes 3rd (optional) options hash.
  * [API] Broker connection class is now AMQP::Session.
  * [API] AMQP::Error instance now may carry cause, an exception that caused
exception in question to be raised.
  * [API] When initial TCP connection fails, default action is now to raise
  * [API] AMQP::BasicClient#reconnect now takes 2nd optional argument,
period of waiting in seconds.
  * [FEATURE] Handlers for initial connection failre, connection loss;
channel-level exceptions handlers on Channel instances.
  * [API] AMQP::Exchange#initialize now accepts :arguments option that takes
a hash.
  * [API] AMQP::Queue#initialize now accepts :arguments option that takes a
  * [API] AMQP#Logger is deprecated. It will be removed before 1.0 release.
  * [API] AMQP#fork is deprecated. It will be removed before 1.0 release.
  * [API] AMQP::RPC is deprecated. It will be removed before 1.0 release.
  * [FEATURE] Significant improvements to the documentation. From now on
lack of/poor documentation is considered a severe bug.
  * [FEATURE] Support for RabbitMQ extensions to AMQP 0.9.1
  * [API] AMQP::Exchange#publish now accepts (an optional) callback.
  * [API] AMQP::Channel.new now accepts (an optional) callback.
  * [API] AMQP::Header#ack now can acknowledge multiple deliveries
  * [API] AMQP::Exchange#delete now takes (an optional) block that is called
when exchange.delete-ok response arrives.
  * [API] AMQP::Header now implements #to_hash
  * [API] AMQP::Queue#pop block now can take 1, 2 or 3 arguments.
  * [API] AMQP::Queue#purge  now takes an optional block which is called
when queue.purge-ok response arrives.
  * [API] AMQP::Queue#delete now takes an optional block which is called
when queue.delete-ok response arrives.
  * [API] AMQP::Queue#delete now accepts :nowait option.
  * [API] AMQP::Queue#unbind now takes an optional block which is called
when queue.unbind-ok response arrives.
  * [API] AMQP::Queue#unbind now accepts :routing_key as alias to :key. we
believe it is a good idea to use AMQP terms.
  * [API] AMQP::Channel#prefetch now takes (an optional) 2nd parameter that
specifies that QoS settings should be applied to underlying connection, as
well as optional callback.
  * [API] AMQP::Channel#recover now takes (an optional) callback that is
called when basic.recover-ok is received.
  * [API] AMQP::Frame is gone.
  * [API] AMQP::Buffer is gone. Serialization & framing are now handled
primarily by amq-protocol.
  * [API] AMQP::Queue#publish is deprecated.
  * [API] Name argument for AMQP::Queue.new and Channel#queue is optional.

1: http://www.rabbitmq.com/blog/2011/03/01/ruby-amqp-benchmarks/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110430/f3a89327/attachment.htm>

More information about the rabbitmq-discuss mailing list