Ruby RabbitMQ clients blog

News and updates about various Ruby clients for RabbitMQ

Hutch 0.20.0 Is Released

TL;DR

Hutch 0.20.0 is released to rubygems.org.

This is a minor feature release.

Changes between 0.19.0 and 0.20.0

Hutch::Exception includes Bunny::Exception

Hutch::Exception now inherits from Bunny::Exception which inherits from StandardError.

GH issue: #137.

Pluggable (Negative) Acknowledge Handlers

Hutch now can be configured to use a user-provided object(s) to perform acknowledgement on consumer exceptions.

For example, this is what the default handler looks like:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
require 'hutch/logging'
require 'hutch/acknowledgements/base'

module Hutch
  module Acknowledgements
    class NackOnAllFailures < Base
      include Logging

      def handle(delivery_info, properties, broker, ex)
        prefix = "message(#{properties.message_id || '-'}): "
        logger.debug "#{prefix} nacking message"

        broker.nack(delivery_info.delivery_tag)

        # terminates further chain processing
        true
      end
    end
  end
end

Handlers are configured similarly to exception notification handlers, via :error_acknowledgements in Hutch config.

Contributed by Derek Kastner.

GH issue: #177.

Configurable Exchange Properties

:mq_exchange_options is a new config option that can be used to provide a hash of exchange attributes (durable, auto-delete). The options will be passed directly to Bunny (or March Hare, when running on JRuby).

Contributed by Derek Kastner.

GH issue: #170.

Bunny Update

Bunny is updated to 2.2.1.

Full Changelog

Full change log can be found on GitHub.

About the Author

Michael on behalf of the Hutch maintainers Team.

Bunny 2.2.1 Is Released

TL;DR

Bunny 2.2.1 is released to rubygems.org.

2.2.1 is a maintenance release.

Changes between Bunny 2.2.0 and 2.2.1

No TLS Socket Double-init

Makes sure that TLS sockets are not double-initialized.

GH issue: #345.

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.

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