Ruby RabbitMQ clients blog

News and updates about various Ruby clients for RabbitMQ

March Hare 2.20.0 Is Released

TL;DR

March Hare 2.20.0 is released to rubygems.org.

This is a maintenance release.

Changes Between 2.19.0 and 2.20.0 (November 2nd, 2016)

Connection Recovery Should Retry on Protocol Handshake Timeout

When an intermediary such as HAproxy with no backends online (or a problematic server node) doesn’t respond to a protocol header sent to it, RabbitMQ Java client will throw a generic operation timeout exception because the heartbeat mechanism is not yet enabled (it has not yet negotiated a timeout value for it!)

March Hare should handle this exception and retry, as if it was an I/O or skipped heartbeats exception.

Kudos to Andrew Cholakian and Jordan Sissel for digging this issue out.

GitHub issues: #107, logstash-plugins/logstash-input-rabbitmq#76

Changes Between 2.18.0 and 2.19.0 (October 26th, 2016)

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to a milestone version of 3.6.6 to include a number of bug fixes early.

Thread Pool Leak

GitHub issue: #97.

Contributed by Michael Reis.

Removed Unused Thread Pool

March Hare relies on RabbitMQ Java client for consumer dispatch but one (unused) thread pool was still instantiated.

GitHub issue: #96.

Contributed by Ivo Anjo.

Channel Allocation Failure Throws an Exception

GitHub issue: #98.

Contributed by Michael Reis.

Full Change Log

Please consult the change log to learn about the changes.

About the Author

Michael on behalf of the Ruby RabbitMQ Clients Team

Bunny 2.6.1 Is Released

TL;DR

Bunny 2.6.1 is released to rubygems.org.

2.6.1 is a maintenance release.

Changes between Bunny 2.6.0 and 2.6.1

Bunny::ConsumerWorkPool#shutdown Terminates Early When It’s Safe to Do So

Bunny::ConsumerWorkPool#shutdown(true) waited for consumer shutdown even if the pool wasn’t active (there were no consumers on its channel).

GitHub issue: #438.

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

Bunny 2.6.0 Is Released

TL;DR

Bunny 2.6.0 is released to rubygems.org.

2.6.0 is a maintenance release.

Changes between Bunny 2.5.0 and 2.6.0

Graceful Shutdown of Consumers

Consumer work pool will now allow for a grace period before stopping pool threads so that delivery processing in progress can have a chance to finish.

GitHub issue: #437

Contributed by Stefan Sedich.

Bunny::Channel#wait_for_confirms Now Throws When Used on a Closed Channel

GitHub issue: #428

Contributed by Dimitar Dimitrov.

Race Condition Eliminated in Bunny::Channel#wait_for_confirms

GitHub issue: #424

Contributed by Dimitar Dimitrov.

More Defensive Consumer Work Pool

Bunny::ConsumerWorkPool#join and Bunny::ConsumerWorkPool#pause no longer fails with a NoMethodError on nil when executed on a work pool that doesn’t have active threads (consumers).

This change is largely cosmetic and won’t affect the majority of of projects in any way.

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

Bunny 2.5.1 Is Released

TL;DR

Bunny 2.5.1 is released to rubygems.org.

2.5.1 is a maintenance release.

Changes between Bunny 2.5.0 and 2.5.1

More Defensive Consumer Work Pool

Bunny::ConsumerWorkPool#join and Bunny::ConsumerWorkPool#pause no longer fails with a NoMethodError on nil when executed on a work pool that doesn’t have active threads (consumers).

This change is largely cosmetic and won’t affect the majority of of projects in any way.

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

March Hare 2.18.0 Is Released

TL;DR

March Hare 2.18.0 is released to rubygems.org.

This is a maintenance release.

Changes Between 2.17.0 and 2.18.0

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.6.5.

Changes Between 2.16.0 and 2.17.0

User-provided Consumer Tags

It is now possible to provide a custom consumer tag instead of relying on RabbitMQ to generate one.

GH issue: #92

Contributed by Eger Andreas.

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.6.2.

Full Change Log

Please consult the change log to learn about the changes.

About the Author

Michael on behalf of the Ruby RabbitMQ Clients Team

Bunny 2.5.0 Is Released

TL;DR

Bunny 2.5.0 is released to rubygems.org.

2.5.0 is a maintenance release.

Changes between Bunny 2.4.0 and 2.5.0

Exchange Bindings are Now Correctly Recovered

GitHub issue: #410

Contributed by Andrew Bruce.

Bunny::Channel#wait_for_confirms Awaits While There’re Outstanding Unconfirmed Messages

GitHub issue: #424

Contributed by Dimitar Dimitrov.

Queue Recovery Respects the :no_declare Option

Queue recovery now respects the :no_declare option.

Bunny::Channel#wait_for_confirms Throws Early

Bunny::Channel#wait_for_confirms now throws an exception early when invoked on a closed channel.

GitHub issue: #428.

Contributed by Dimitar Dimitrov.

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

Bunny 2.4.0 Is Released

TL;DR

Bunny 2.4.0 is released to rubygems.org.

2.4.0 is a minor feature release.

Changes between Bunny 2.3.0 and 2.4.0

Unconfirmed Delivery Tag Set Reset on Network Recovery

Channels will now reset their unconfirmed delivery tag set after recovery.

GitHub issue: #406

Contributed by Bill Ruddock.

Support (Quoted) IPv6 Addresses in Address Lists

GitHub issue: #383.

Contributed by Jeremy Heiler.

Transport#read_fully Doesn’t Try to Recover

Since transport is replaced by a recovering connection anyway, and this produces confusing errors up the stack.

GitHub issue: #359

Contributed by Donal McBreen.

Client-Provided Session :properties Merged with Defaults

Client-Provided Session :properties will now be merged with defaults instead of replacing them. This makes it much more convenient to override a single key.

More Predictable RABBITMQ_URL Handling

RABBITMQ_URL no longer will be used if any other connection options are provided. This makes it possible to use RABBITMQ_URL for some connections and options for others in a single OS process.

GitHub issue: #403

Contributed by Jimmy Petersen.

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

Bunny 2.3.1 Is Released

TL;DR

Bunny 2.3.1 is released to rubygems.org.

2.3.1 is a maintenance release.

Changes between Bunny 2.3.0 and 2.3.1

Support (Quoted) IPv6 Addresses in Address Lists

GitHub issue: #383.

Contributed by Jeremy Heiler.

Transport#read_fully Doesn’t Try to Recover

Since transport is replaced by a recovering connection anyway, and this produces confusing errors up the stack.

GitHub issue: #359

Contributed by Donal McBreen.

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

Amqp Gem 1.6.0 Is Released

TL;DR

amqp gem 1.6.0 is released to rubygems.org.

This is a maintenance release that has no new features but updates amq-protocol dependency and drops Ruby 1.9 support.

Changes Between 1.5.0 and 1.6.0

amq-protocol Update

Minimum amq-protocol version is now 2.0.1.

Provide More Details in TCP Connection Failure Exception

Contributed by Neil Hooey.

GH issue: #222.

Ensures frameset is cleared after an unhandled exception

Ensures frameset is cleared after an unhandled exception. This avoids confusing exceptions such as

1
undefined method `method_class' for #<AMQ::Protocol::BodyFrame:0x0000001e8a60b0>

Contributed by Michael Lutsiuk.

GH issue: #218

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael on behalf of the Ruby RabbitMQ Clients Team

Amqp Gem 1.5.3 Is Released

TL;DR

amqp gem 1.5.3 is released to rubygems.org.

This is a maintenance release.

Changes Between 1.5.1 and 1.5.3

Provide More Details in TCP Connection Failure Exception

Contributed by Neil Hooey.

GH issue: #222.

Ensures frameset is cleared after an unhandled exception

Ensures frameset is cleared after an unhandled exception. This avoids confusing exceptions such as

1
undefined method `method_class' for #<AMQ::Protocol::BodyFrame:0x0000001e8a60b0>

Contributed by Michael Lutsiuk.

GH issue: #218

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael on behalf of the Ruby RabbitMQ Clients Team