TL;DR
Bunny 0.9.0 is released to rubygems.org.
This release is a ground-up rewrite of Bunny that eliminates a lot of limitations of earlier versions, adds new features, improves throughput, makes Bunny benefit from runtime parallelism on Ruby implementations that support it and introduces other numerous improvements.
It is not entirely backwards compatible, although we’ve tried hard to make upgrading as seamless as possible.
This is a major step forward for Bunny. The library is now a feature complete, first class RabbitMQ client.
We encourage all Bunny users to upgrade to it.
Release Highlights
Feature Complete
Bunny 0.9 supports all RabbitMQ 3.x features, including extensions.
If something is possible to do with RabbitMQ over AMQP 0.9.1, you can do it with Bunny 0.9.
No More Limitations
Bunny 0.7.x
and 0.8.0
did not support publishing of messages over 128 Kb in size and
had limitations around asynchronous (“push”) consumers.
None of these limitations exist in 0.9.
Error Handling and Recovery
Bunny 0.9 introduces automatic recovery from network failures, much like amqp gem has.
Better Performance
Bunny 0.9 uses the same protocol serialization library as amqp gem. It has lower memory footprint and significantly more efficient: serialization throughput increased from 20% to x50 times compared to Bunny 0.8 serialization code.
Fewer memory allocations mean less GC stress and GC-induced CPU burn.
Concurrency
Bunny uses a separate thread for network activity. Consumers dispatch messages to a thread pool (by default of size 1) that can be tuned.
On Ruby runtimes that support runtime parallelism, this will increase throughput of both consumers and publishers on multicore hardware.
Improved Documentation
Bunny now has documentation guides that are on par or even better than amqp gem documentation.
Imprved TLS Support
Bunny’s TLS/SSL support is more flexible: more options available to configure when you need them.
RabbitMQ 2.x is the Minimum Supported Version
RabbitMQ 2.x is now the minimum supported version. 3.x releases are recommended.
Full Bunny 0.9 Change Log
Detailed Bunny changelog is available on GitHub.
Documentation
Guides
- Getting Started
- Concepts and Terminology
- Connecting to RabbitMQ
- Queues and Consumers
- Exchanges and Publishers
- Bindings
- Durability and Related Matters
- Using AMQP 0.9.1 Extensions in RabbitMQ
- Error Handling and Recovery
- Using TLS/SSL Connections
- Troubleshooting
API Reference
Getting Help & Reporting Issues
Author
Michael on behalf of the Ruby RabbitMQ Clients Team