[rabbitmq-discuss] RabbitMQ 2.5.0 release (incl release notes)

jerry jerry at rabbitmq.com
Wed Jun 15 00:03:54 BST 2011

The RabbitMQ team is delighted to announce the release of RabbitMQ 

This release fixes a number of bugs.  In particular:

   - recovery has been simplified, improving startup times when
     many exchanges or bindings exist

   - bindings are recovered between durable queues and
     non-durable exchanges on restart of individual cluster nodes

   - better performance under high load and memory pressure

   - source compatibility with the new Erlang R14B03 release

New features include:

   - tracing facility for debugging incoming and outgoing messages,
     (see http://www.rabbitmq.com/firehose.html)

   - improved inbound network performance

   - improved routing performance

   - new rabbitmqctl commands ('report', 'environment', and

As always, we welcome any questions, bug reports, and other feedback on 
this release, as well as general suggestions for features and 
enhancements in future releases. Mail us via the RabbitMQ discussion 
list, or directly at info at rabbitmq.com.

For details see the release notes below.

Release: RabbitMQ 2.5.0

Release Highlights

bug fixes
- reduce complexity of recovery, significantly improving startup times
   when there are large numbers of exchanges or bindings
- recover bindings between durable queues and non-durable exchanges
   on restart of individual cluster nodes
- do not read messages off disk in the x-message-ttl logic. This could
   severely impact performance when many queues expired messages
- resolve a timer issue that could impact performance when under high
   load and memory pressure
- make source code compilable with latest Erlang release (R14B03)
- assert x-message-ttl equivalence on queue redeclaration

- tracing facility for incoming and outgoing messages - see
- optionally serialise events for exchange types
- detect available memory on OpenBSD
- add Windows service description
- improve inbound network performance
- improve routing performance
- new rabbitmqctl commands:
   report - comprehensive report of server status for support purposes
   environment - display application environment (such as config vars)
   cluster_status - display cluster status (formerly part of 'status')

java client
bug fixes
- compile under Java 1.5 (again)

- experimental API employing command objects and builders. See
   for some examples. Feedback welcome!

.net client
bug fixes
- make method id of 'exchange.unbind-ok' match definition in the
   broker, so the client lib can recognise that command.
- WCF bindings specified in configuration files are no longer ignored

- allow larger than default message sizes in WCF

management plugin
bug fixes
- handle race between queue creation/deletion and stats reporting that
   could result in errors in the latter, particularly when there are
   large numbers of queues and/or high churn
- handle race when starting the management plug-in on multiple cluster
   nodes, which in some rare (but quite reproducible) circumstances
   could cause some of the brokers to crash
- remove duplicate 'messages' entry from queue stats JSON
- make binding arguments optional in the HTTP API for binding creation
- correct error handling in the HTTP API for binding creation
- prevent spurious failures of aliveness test

- performance improvements which significantly reduce the cost of
   stats reporting, allowing the management plug-in to cope with much
   higher numbers of queues, bindings, etc.
- issue an alert when a configured user cannot access any vhost or a
   vhost has no users
- allow choice of which stats/info items to return in the HTTP API
- include protocol adapter and direct connections in API and UI


- more flexible configuration permitting different services to run on
   different ports, SSL support and interface-based restrictions. See
   http://www.rabbitmq.com/mochiweb.html for more details. Note that by
   default the JSON-RPC channel plugin will now listen on port 55670.

STOMP plugin
- support connections over SSL
bug fixes
- correct spelling of 'heart-beat' header

build and packaging
bug fixes
- fix breakage in /etc/init.d/rabbitmq-server rotate-logs command

- plug-in build system: support the declaration of inter-plugin
   dependencies, making development of plugins much easier.
   Inter-module dependencies are calculated automatically for all
   plugins. Note that some plugins and applications have been
   renamed for  consistency, which may require changes to any existing
   `rabbitmq.config` to match.
- do not require access to www.docbook.org when building the server
   w/o docbook installed
- get rid of some warnings in the .net client build

To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply
install the new version. All configuration and persistent message data
is retained.

To upgrade a clustered RabbitMQ from release 2.1.1 or later, install
the new version on all the nodes and follow these instructions:
All configuration and persistent message data is retained.

To upgrade a non-clustered RabbitMQ from release 2.1.0, first upgrade
to 2.1.1 (which retains all data), and then to the current version as
described above.

To upgrade a clustered RabbitMQ prior to 2.1.1 or a stand-alone broker
from releases prior to 2.1.0, if the RabbitMQ installation does not
contain any important data then simply install the new
version. RabbitMQ will move the existing data to a backup location
before creating a fresh, empty database. A warning is recorded in the
logs. If your RabbitMQ installation contains important data then we
recommend you contact support at rabbitmq.com for assistance with the

More information about the rabbitmq-discuss mailing list