TL;DR
Bunny 1.2.0 is released to rubygems.org.
This is a minor feature and bug fix release.
Changes between Bunny 1.1.0 and 1.2.0
:key Supported in Bunny::Channel#queue_bind
It is now possible to use :key
(which Bunny versions prior to 0.9 used)
as well as :routing_key
as an argument to Bunny::Queue#bind
.
System Exceptions Not Rescued by the Library
Bunny now rescues StandardError
instead of Exception
where
it automatically does so (e.g. when dispatching deliveries to consumers).
Contributed by Alex Young.
Initial Socket Connection Timeout Again Raises Bunny::TCPConnectionFailed
Initial socket connection timeout again raises Bunny::TCPConnectionFailed
on the connection origin thread.
Thread Leaks Plugged
Bunny::Session#close
on connections that have experienced a network failure
will correctly clean up I/O and heartbeat sender threads.
Contributed by m-o-e.
Bunny::Concurrent::ContinuationQueue#poll Rounding Fix
Bunny::Concurrent::ContinuationQueue#poll
no longer floors the argument
to the nearest second.
Contributed by Brian Abreu.
Routing Key Limit
Per AMQP 0-9-1 spec, routing keys cannot be longer than 255 characters.
Bunny::Channel#basic_publish
and Bunny::Exchange#publish
now enforces
this limit.
Nagle’s Algorithm Disabled Correctly
Bunny now properly disables Nagle’s algorithm on the sockets it opens. This likely means significantly lower latency for workloads that involve sending a lot of small messages very frequently.
Contributed by Nelson Gauthier (AirBnB).
Internal Exchanges
Exchanges now can be declared as internal:
1 2 |
|
Internal exchanges cannot be published to by clients and are solely used for Exchange-to-Exchange bindings and various plugins but apps may still need to bind them. Now it is possible to do so with Bunny.
Uncaught Consumer Exceptions
Uncaught consumer exceptions are now handled by uncaught exceptions handler that can be defined per channel:
1 2 3 |
|
Full Change Log
Full change log can be found on GitHub.
About the Author
Michael on behalf of the Ruby RabbitMQ Clients Team