Ruby RabbitMQ clients blog

News and updates about various Ruby clients for RabbitMQ

March Hare 2.13.0 Is Released

TL;DR

March Hare 2.13.0 is released to rubygems.org.

This is a maintenance release.

Changes Between 2.12.0 and 2.13.0

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.5.5.

Changes Between 2.11.0 and 2.12.0

Ruby Exceptions Thrown by More Public Methods

  • Channel#exchange_declare
  • Channel#exchange_bind
  • Channel#exchange_unbind

now raise Ruby exceptions instead of their Java counterparts.

Contributed by Thilo-Alexander Ginkel.

Connection Recovery Fixed For Connections Using URIs

Connection recovery no longer fails silently if the :uri option was used in Connection#new.

Contributed by Noah Magram.

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

Hutch 0.19.0 Is Released

TL;DR

Hutch 0.19.0 is released to rubygems.org.

This is a minor feature release.

Changes Between 0.18.0 and 0.19.0

Pluggable Serialisers

Hutch now supports pluggable serialisers: see Hutch::Serializer::JSON for an example. Serialiser is configured via Hutch config as a Ruby class.

Contributed by Dmitry Galinsky.

multi_json Update

Hutch now depends on multi_json 1.11.x.

Bunny Update

Bunny is updated to 2.2.0.

More Bunny SSL Options

:mq_tls_ca_certificates and :mq_verify_peer options will now be passed on to Bunny as :tls_ca_certificates and :verify_peer respectively.

Contributed by Kennon Ballou.

Full Changelog

Full change log can be found on GitHub.

About the Author

Michael on behalf of the Hutch maintainers Team.

Bunny 2.2.0 Is Released

TL;DR

Bunny 2.2.0 is released to rubygems.org.

2.2.0 is a minor feature release.

Changes between Bunny 2.1.0 and 2.2.0

Add :addresses to connect options

Before this the connection options only allowed multiple hosts, an address is a combination of a host and a port. This makes it possible to specify different hosts with different ports.

Contributed by Bart van Zon (Tele2).

Recover from connection.close by default

Bunny will now try to reconnect also when server sent connection.close is received, e.g. when a server is restarting (but also when the connection is force closed by the server). This is in-line with how many other clients behave. The old default was recover_from_connection_close: false.

Contributed by Carl Hörberg (CloudAMQP).

Full Change Log

Full change log can be found on GitHub.

About the Author

Michael maintains Bunny and several other RabbitMQ client libraries.

Hutch 0.18.0 Is Released

TL;DR

Hutch 0.18.0 is released to rubygems.org.

This is a minor feature release.

Changes Between 0.17.0 and 0.18.0

JRuby Support (Using March Hare)

Hutch will now use March Hare when running on JRuby. This will yield significant throughput and core utilisation improvements for workloads with many and/or busy consumers.

Contributed by Teodor Pripoae.

Configurable Consumer Thread Pool Size

:consumer_pool_size is a new option (defaults to 1) which defines Bunny consumer work pool size.

Contributed by Derek Kastner.

Bunny Logger Option

:client_logger is a new option that allows for configuring loggerd used by Bunny, the underlying RabbitMQ client library.

Contributed by Nate Salisbury.

Full Changelog

Full change log can be found on GitHub.

About the Author

Michael on behalf of the Hutch maintainers Team.

Bunny 2.1.0 Is Released

TL;DR

Bunny 2.1.0 is released to rubygems.org.

2.1.0 is a bug fix release that introduces a breaking change.

Changes between Bunny 2.0.0 and 2.1.0

Bunny 2.1.0 has an important breaking change. It is highly advised that 2.1.0 is not mixed with earlier versions of Bunny in case your applications include integers in message headers.

Integer Value Serialisation in Headers

Integer values in headers are now serialised as signed 64-bit integers. Previously they were serialised as 32-bit unsigned integers, causing both underflows and overflows: incorrect values were observed by consumers.

It is highly advised that 2.1.0 is not mixed with earlier versions of Bunny in case your applications include integers in message headers.

If that’s not the case, Bunny 2.1 will integeroperate with any earlier version starting with 0.9.0 just fine. Popular clients in other languages (e.g. Java and .NET) will interoperate with Bunny 2.1.0 without issues.

Explicit Ruby 2.0 Requirement

Bunny now requires Ruby 2.0 in the gemspec.

Contributed by Carl Hörberg.

JRuby Fix

Bunny runs again on JRuby. Note that JRuby users are strongly advised to use March Hare instead.

Contributed by Teodor Pripoae.

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.0.1 Is Released

TL;DR

Bunny 2.0.1 is released to rubygems.org.

This is a bug fix and usability release.

Changes between Bunny 2.0.0 and 2.0.1

Explicit Ruby 2.0 Requirement

Bunny now requires Ruby 2.0 in the gemspec.

Contributed by Carl Hörberg.

JRuby Fix

Bunny runs again on JRuby. Note that JRuby users are strongly advised to use March Hare instead.

Contributed by Teodor Pripoae.

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.11.0 Is Released

TL;DR

March Hare 2.11.0 is released to rubygems.org.

This is a bug fix release.

Changes Between 2.10.0 and 2.11.0

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.5.4.

Changes Between 2.9.0 and 2.10.0

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.5.3.

Header Keys Stringified

Header keys are now automatically stringified so it’s possible to use symbols as keys.

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.0.0 Is Released

TL;DR

Bunny 2.0.0 is released to rubygems.org.

2.0.0 is a minor feature and bug fix release that drops Ruby 1.9 and 1.8 support.

Changes between Bunny 1.7.0 and 2.0.0

Bunny 2.0 doesn’t have any breaking API changes but drops Ruby 1.8 and 1.9 (both EOL’ed) support, hence the version.

Minimum Required Ruby Version is 2.0

Bunny 2.0 requires Ruby 2.0 or later.

Non-Blocking Writes

Bunny now uses non-blocking socket writes, uses a reduced number of writes for message publishing (frames are batched into a single write), and handles TCP back pressure from RabbitMQ better.

Contributed by Irina Bednova and Michael Klishin.

Reduced Timeout Use

Bunny::ContinuationQueue#poll no longer relies on Ruby’s Timeout which has numerous issues, including starting a new “interruptor” thread per operation, which is far from efficient.

Contributed by Joe Eli McIlvain and Carl Hörberg.

Capped Number of Connection Recovery Attempts

:recovery_attempts is a new option that limits the number of connection recovery attempts performed by Bunny. nil means “no limit”.

Contributed by Irina Bednova.

Bunny::Channel#basic_ack and Related Methods Improvements

Bunny::Channel#basic_ack, Bunny::Channel#basic_nack, and Bunny::Channel#basic_reject now adjust delivery tags between connection recoveries, as well as have a default value for the second argument.

Contributed by Wayne Conrad.

Logger Output Remains Consistent

Setting the @logger.progname attribute changes the output of the logger. This is not expected behaviour when the client provides a custom logger. Behaviour remains unchainged when the internally initialized logger is used.

Contributed by Justin Carter.

prefetch_count is Limited to 65535

Since basic.qos’s prefetch_count field is of type short in the protocol, Bunny must enforce its maximum allowed value to 2^16 - 1 to avoid confusing issues due to overflow.

Per-Consumer and Per-Channel Prefetch

Recent RabbitMQ versions support basic.qos global flag, controlling whether prefetch applies per-consumer or per-channel. Bunny Channel#prefetch now allows flag to be set as optional parameter, with the same default behaviour as before (per-consumer).

Contributed by tiredpixel.

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.0.0-rc1 Is Released

TL;DR

Bunny 2.0.0-rc1 is released to rubygems.org.

2.0.0 is a minor feature and bug fix release that drops Ruby 1.9 and 1.8 support.

Changes between Bunny 1.7.0 and 2.0.0

Bunny 2.0 doesn’t have any breaking API changes but drops Ruby 1.8 and 1.9 (both EOL’ed) support, hence the version.

Minimum Required Ruby Version is 2.0

Bunny 2.0 requires Ruby 2.0 or later.

Reduced Timeout Use

Bunny::ContinuationQueue#poll no longer relies on Ruby’s Timeout which has numerous issues, including starting a new “interruptor” thread per operation, which is far from efficient.

Contributed by Joe Eli McIlvain and Carl Hörberg.

Bunny::Channel#basic_ack and Related Methods Improvements

Bunny::Channel#basic_ack, Bunny::Channel#basic_nack, and Bunny::Channel#basic_reject now adjust delivery tags between connection recoveries, as well as have a default value for the second argument.

Contributed by Wayne Conrad.

Logger Output Remains Consistent

Setting the @logger.progname attribute changes the output of the logger. This is not expected behaviour when the client provides a custom logger. Behaviour remains unchainged when the internally initialized logger is used.

Contributed by Justin Carter.

prefetch_count is Limited to 65535

Since basic.qos’s prefetch_count field is of type short in the protocol, Bunny must enforce its maximum allowed value to 2^16 - 1 to avoid confusing issues due to overflow.

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.9.0 Is Released

TL;DR

March Hare 2.9.0 is released to rubygems.org.

This is primarily a bug fix release.

Changes Between 2.8.0 and 2.9.0

TLS Connection Fixes

TLS connections with an explicitly provided TLS version and PKCS12 certificate no longer fail. In addition, related connection have changed to

  • :tls (version as a string: TLSv1, TLSv1.1, TLSv1.2)
  • :tls_certificate_path: PKCS12 certificate path as a string
  • :tls_certificate_password: PKCS12 certificate password as a string

To quickly generate a PKCS12 certificate as well as CA and server certificate/key pair, see tls-gen.

URI Connections Fix

Host selector no longer breaks connections that use URIs.

GH issue: #73.

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.5.1.

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