[rabbitmq-discuss] amqp gem 0.8.0.rc1 is now available from rubygems.org

Michael Klishin michael.s.klishin at gmail.com
Sun Apr 17 02:49:49 BST 2011


First pre-release version (see below) of amqp gem 0.8.0 is now available
from rubygems.org.
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


== Highlights

* amqp gem now implements version 0.9.1 of AMQP. This alone brings many
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
* performance & memory usage improvements (and this a lot of room to improve
now)
* test suite with plenty of integration examples that use AMQP broker


== Backwards compatibility

This release introduces many features
and API improvements but also tries to be as backwards-compatible as
possible. Unfortunately,
amqp 0.7.x and earlier did not really 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 go extra miles to make sure even
controversial
methods/features/use cases of key classes work as before.

Note that RC1 does not include TLS support yet. It definitely will be
brought back before the final
release.


== Before you upgrade

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.

Documentation for 0.8.0 is up at
http://rubydoc.info/github/ruby-amqp/amqp/master/frames
We are still in the process of writing migration guide, tutorials, adding
even more examples and improving
some areas previous versions did not address very well (or at all), like
connection loss handing, separate
error handling for connections and channels and so on.

Expect several more RC releases before final 0.8.0.


== So, is it an RC or not?

version has to be 0.8.0.rc1 because we previously pushed 0.8.0.pre only to
learn that you cannot re-publish gems
even if you `gem yank` them. Rubygems picks 0.8.0.pre over 0.8.0.beta1 and
0.8.0.pre.beta1 (because comparison for alphanumeric segment
is alphabetical), so we had to go with 0.8.0.rc1.

Even though this version should have been beta1, we are actually very close
to RC phase.


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

= Changelog for 0.8.0

  * [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
  * [FEATURE] Support for RabbitMQ extensions to AMQP 0.9.1
  * [API] AMQP::Exchange#publish now accepts (an optional) block that is
called as soon as message
          is considered published (EventMachine loop has pushed payload down
the network stack).
  * [API] AMQP::Channel.new now accepts (an optional) block and yields newly
opened channel to it as soon as
          channel.open-ok arrives from the broker.
  * [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.
      1 argument means handler is only interested in content payload
      2 arguments mean handler is interested in headers and the content
      3 arguments mean handler is receives headers, content and AMQP method
frame
  * [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.
  * [FEATURE] AMQP gem is now AMQP 0.9.1 compatible: it runs atop of
amq-client gem
  * [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/
-- 
MK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110417/fbf2fa07/attachment.htm>


More information about the rabbitmq-discuss mailing list