https://github.com/ruby-amqp/bunny
Bunny is a popular, easy to use, mature Ruby client for RabbitMQ
https://github.com/ruby-amqp/bunny
Keywords
amqp amqp0-9-1 messaging rabbitmq ruby
Keywords from Contributors
activerecord activejob mvc rubygems deserialization rack ruby-gem debugger rspec rubocop
Last synced: 1 day ago
JSON representation
Repository metadata
Bunny is a popular, easy to use, mature Ruby client for RabbitMQ
- Host: GitHub
- URL: https://github.com/ruby-amqp/bunny
- Owner: ruby-amqp
- License: other
- Created: 2011-03-02T13:40:03.000Z (about 15 years ago)
- Default Branch: main
- Last Pushed: 2026-01-22T02:12:13.000Z (about 1 month ago)
- Last Synced: 2026-02-27T16:19:35.668Z (4 days ago)
- Topics: amqp, amqp0-9-1, messaging, rabbitmq, ruby
- Language: Ruby
- Homepage:
- Size: 4.02 MB
- Stars: 1,410
- Watchers: 29
- Forks: 311
- Open Issues: 6
- Releases: 6
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
README.md
Bunny, a Ruby RabbitMQ Client
Bunny is a RabbitMQ client that focuses on ease of use. It
is feature complete, supports all recent RabbitMQ features and does not
have any heavyweight dependencies.
I Know What RabbitMQ and Bunny are, How Do I Get Started?
What is Bunny Good For?
One can use Bunny to make Ruby applications interoperate with other
applications (both built in Ruby and not). Complexity and size may vary from
simple work queues to complex multi-stage data processing workflows that involve
many applications built with all kinds of technologies.
Specific examples:
-
Events collectors, metrics & analytics applications can aggregate events produced by various applications
(Web and not) in the company network. -
A Web application may route messages to a Java app that works
with SMS delivery gateways. -
MMO games can use flexible routing RabbitMQ provides to propagate event notifications to players and locations.
-
Price updates from public markets or other sources can be distributed between interested parties, from trading systems to points of sale in a specific geographic region.
-
Content aggregators may update full-text search and geospatial search indexes
by delegating actual indexing work to other applications over RabbitMQ. -
Companies may provide streaming/push APIs to their customers, partners
or just general public. -
Continuous integration systems can distribute builds between multiple machines with various hardware and software
configurations using advanced routing features of RabbitMQ. -
An application that watches updates from a real-time stream (be it markets data
or Twitter stream) can propagate updates to interested parties, including
Web applications that display that information in the real time.
Supported Ruby Versions
Modern Bunny versions support
- CRuby 3.2 through 3.4 (inclusive)
- TruffleRuby
For environments that use TLS, Bunny expects Ruby installations to use a recent enough OpenSSL version that
includes support for TLS 1.3.
JRuby
Bunny no longer supports JRuby.
JRuby users should use March Hare, which has a similar API
and is built on top of the RabbitMQ Java client specifically for JRuby.
Supported RabbitMQ Versions
Modern Bunny releases target currently community supported RabbitMQ release series.
The protocol implemented by Bunny was first introduced in RabbitMQ 2.0 and has evolved
via extensions and with next to no breaking changes, so all key Bunny operations can be used with a wide range
of RabbitMQ versions, accounting for the few potentially breaking changes they
may introduce, e.g. the idempotency of queue.delete operations.
Change Log
Installation & Bundler Dependency
Most Recent Release
Bundler Dependency
To use Bunny in a project managed with Bundler:
gem "bunny", ">= 2.23.0"
With Rubygems
To install Bunny with RubyGems:
gem install bunny
Quick Start
Below is a small snippet that demonstrates how to publish
and synchronously consume ("pull API") messages with Bunny.
For a 15 minute tutorial using more practical examples, see Getting Started with RabbitMQ and Ruby using Bunny.
require "bunny"
# Start a communication session with RabbitMQ
conn = Bunny.new
conn.start
# open a channel
ch = conn.create_channel
ch.confirm_select
# declare a queue
q = ch.queue("test1")
q.subscribe(manual_ack: true) do |delivery_info, metadata, payload|
puts "This is the message: #{payload}"
# acknowledge the delivery so that RabbitMQ can mark it for deletion
ch.ack(delivery_info.delivery_tag)
end
# publish a message to the default exchange which then gets routed to this queue
q.publish("Hello, everybody!")
# await confirmations from RabbitMQ, see
# https://www.rabbitmq.com/publishers.html#data-safety for details
ch.wait_for_confirms
# give the above consumer some time consume the delivery and print out the message
sleep 1
puts "Done"
ch.close
# close the connection
conn.close
Documentation
Getting Started
For a 15 minute tutorial using more practical examples, see Getting Started with RabbitMQ and Ruby using Bunny.
Guides
Bunny documentation guides are under docs/guides in this repository:
- Queues and Consumers
- Exchanges and Publishers
- AMQP 0.9.1 Model Explained
- Connecting to RabbitMQ
- Error Handling and Recovery
- TLS/SSL Support
- Bindings
- Using RabbitMQ Extensions with Bunny
- Durability and Related Matters
Some highly relevant RabbitMQ documentation guides:
- Connections
- Channels
- Queues
- Quorum queues
- Streams (Bunny can perform basic operations on streams even though it does not implement the RabbitMQ Stream protocol)
- Publishers
- Consumers
- Data safety: publisher and consumer Confirmations
- Production Checklist
API Reference
Community and Getting Help
Mailing List
Please use GitHub Discussions for questions.
GitHub issues should be used for specific, well understood, actionable
maintainers and contributors can work on.
We encourage you to keep an eye on RabbitMQ Discussions,
join the RabbitMQ mailing list
and the RabbitMQ Discord server.
Reporting Issues
If you find a bug you understand well, poor default, incorrect or unclear piece of documentation,
or missing feature, please file an
issue on GitHub.
Please use Bunny's mailing list for questions,
investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
maintainers and contributors can work on.
When filing an issue, please specify which Bunny and RabbitMQ versions you
are using, provide recent RabbitMQ log file contents, full exception stack traces,
and steps to reproduce (or failing test cases).
Other Ruby RabbitMQ Clients
The other widely used Ruby RabbitMQ client is March Hare (JRuby-only).
It's a mature library that require RabbitMQ 3.3.x or later.
Contributing
See CONTRIBUTING.md for more information
about running various test suites.
License
Released under the MIT license.
Owner metadata
- Name: RabbitMQ client libraries for Ruby
- Login: ruby-amqp
- Email: ruby-amqp@googlegroups.com
- Kind: organization
- Description:
- Website: http://rubybunny.info
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/551719?v=4
- Repositories: 14
- Last ynced at: 2024-03-25T19:52:02.136Z
- Profile URL: https://github.com/ruby-amqp
GitHub Events
Total
- Release event: 1
- Delete event: 3
- Pull request event: 23
- Fork event: 14
- Issues event: 23
- Watch event: 31
- Issue comment event: 23
- Push event: 63
- Pull request review event: 2
- Create event: 5
Last Year
- Release event: 1
- Delete event: 2
- Pull request event: 10
- Fork event: 8
- Issues event: 13
- Watch event: 15
- Issue comment event: 10
- Push event: 53
- Create event: 4
Committers metadata
Last synced: 3 days ago
Total Commits: 2,227
Total Committers: 141
Avg Commits per committer: 15.794
Development Distribution Score (DDS): 0.609
Commits in past year: 68
Committers in past year: 2
Avg Commits per committer in past year: 34.0
Development Distribution Score (DDS) in past year: 0.015
| Name | Commits | |
|---|---|---|
| Michael Klishin | m****l@c****g | 870 |
| Michael Klishin | m****l@d****g | 580 |
| Chris Duncan | c****e@g****m | 234 |
| Michael Klishin | m****n@g****m | 137 |
| Jakub Stastny aka botanicus | s****y@1****z | 52 |
| Carl Hörberg | c****g@g****m | 27 |
| Andrew Bruce | me@a****t | 20 |
| Andre Foeken | a****n@n****m | 19 |
| Stefan Kaes | s****s@r****e | 17 |
| Alessandro Verlato | a****o@g****m | 14 |
| Wayne Conrad | w****e@d****m | 13 |
| Olle Jonsson | o****n@g****m | 12 |
| Greg Brockman | g****b@g****m | 11 |
| Chris Knowles | c****s@b****m | 10 |
| Andrew Babichev | a****v@g****m | 9 |
| Jared Kuolt | me@s****m | 7 |
| Chris Gaffney | c****y@c****m | 6 |
| Юрусов Владислав | v****v@r****o | 5 |
| Bart van Zon | b****n@g****m | 5 |
| Stefan Sedich | s****h@g****m | 4 |
| Dimitar Dimitrov | me@d****e | 4 |
| Justin Fitzsimmons | j****f@n****m | 4 |
| Vic Demuzere | v****c@d****e | 3 |
| Thomas Müller | t****7@g****m | 3 |
| Rémi Sauvat | r****t@q****m | 3 |
| Matt Campbell | m****t@s****m | 3 |
| Ionut Popa | i****p@g****m | 3 |
| Daniel Schierbeck | d****h@z****m | 3 |
| Ana María Martínez Gómez | a****z@s****e | 3 |
| Justin Carter | b****s@o****e | 3 |
| and 111 more... | ||
Committer domains:
- bitdeli.com: 1
- mollerstrand.se: 1
- thiruva.com: 1
- hpe.com: 1
- berkeley.edu: 1
- me.com: 1
- object.io: 1
- marcusilgner.com: 1
- bodgit-n-scarper.com: 1
- tuneafish.de: 1
- 84codes.com: 1
- currencycloud.com: 1
- aeriform.one: 1
- bytemark.co.uk: 1
- dio.jp: 1
- chadfowler.com: 1
- mac.com: 1
- freeagent.com: 1
- faustind.dev: 1
- rootnet.nl: 1
- oracle.com: 1
- nutsonline.com: 1
- outreach.io: 1
- bla.ir: 1
- hoopla.net: 1
- busyloop.net: 1
- bk.ru: 1
- utilum.com: 1
- creativequeries.com: 1
- drooms.com: 1
- abshere.net: 1
- podtynnyi.com: 1
- ironsrc.com: 1
- conveyiq.com: 1
- timgroup.com: 1
- pressrelations.de: 1
- airbnb.com: 1
- wulffeld.org: 1
- lucianosousa.net: 1
- guruhut.com: 1
- salesforce.com: 1
- pivotallabs.com: 1
- aurainfosec.com: 1
- akra.net: 1
- gpredictive.de: 1
- directi.com: 1
- sqwiggle.com: 1
- bluestatedigital.com: 1
- terceiro.xyz: 1
- becciu.org: 1
- fotonauts.com: 1
- rustycoin.com.au: 1
- rhnh.net: 1
- veselin.bg: 1
- sharshenov.com: 1
- viennot.biz: 1
- marianposaceanu.com: 1
- 5stops.com: 1
- phusion.nl: 1
- defiant.dk: 1
- justindossey.com: 1
- invision.de: 1
- tiredpixel.com: 1
- microsoft.com: 1
- online.de: 1
- suse.de: 1
- zendesk.com: 1
- soupmatt.com: 1
- qosenergy.com: 1
- demuzere.be: 1
- nulogy.com: 1
- ddimitrov.name: 1
- rnds.pro: 1
- crayoninterface.com: 1
- superjared.com: 1
- bitgamelabs.com: 1
- gregbrockman.com: 1
- databill.com: 1
- railsexpress.de: 1
- nedap.com: 1
- andrewbruce.net: 1
- 101ideas.cz: 1
- gopivotal.com: 1
- defprotocol.org: 1
- clojurewerkz.org: 1
Issue and Pull Request metadata
Last synced: 14 days ago
Total issues: 74
Total pull requests: 83
Average time to close issues: 3 months
Average time to close pull requests: 6 days
Total issue authors: 57
Total pull request authors: 53
Average comments per issue: 3.72
Average comments per pull request: 1.81
Merged pull request: 68
Bot issues: 0
Bot pull requests: 0
Past year issues: 13
Past year pull requests: 21
Past year average time to close issues: 12 days
Past year average time to close pull requests: about 4 hours
Past year issue authors: 7
Past year pull request authors: 10
Past year average comments per issue: 0.54
Past year average comments per pull request: 0.95
Past year merged pull request: 13
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- michaelklishin (11)
- david-krentzlin (3)
- sbonebrake (3)
- blowfishpro (2)
- hadmut (2)
- kinnalru (2)
- brerx (1)
- doconnor-clintel (1)
- andrecavallari (1)
- esiegel (1)
- juliofalbo (1)
- yivo (1)
- PoroshkinaVV (1)
- fuegas (1)
- squeedee (1)
Top Pull Request Authors
- michaelklishin (15)
- sorcix (4)
- byroot (2)
- kevbob1 (2)
- KlimSemikin (2)
- Earlopain (2)
- sbonebrake (2)
- terceiro (2)
- fynsta (2)
- remisauvat (2)
- dchompd (2)
- sharshenov (2)
- faustind (2)
- carlhoerberg (2)
- matias-martini (2)
Top Issue Labels
- mailing list material (9)
- usability (7)
- bug (4)
- operations (3)
- feature (2)
- network (2)
- wontfix (1)
- concurrency (1)
- not enough information (1)
- help wanted (1)
Top Pull Request Labels
Package metadata
- Total packages: 4
-
Total downloads:
- rubygems: 143,174,547 total
- Total docker downloads: 18,201,892
- Total dependent packages: 345 (may contain duplicates)
- Total dependent repositories: 5,445 (may contain duplicates)
- Total versions: 347
- Total maintainers: 6
gem.coop: bunny
Easy to use, feature complete Ruby client for RabbitMQ 3.9 and later versions.
- Homepage: http://rubybunny.info
- Documentation: http://www.rubydoc.info/gems/bunny/
- Licenses: MIT
- Latest release: 2.24.0 (published 11 months ago)
- Last Synced: 2026-02-28T14:31:06.020Z (3 days ago)
- Versions: 170
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 71,584,634 Total
- Docker Downloads: 9,100,946
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 0.357%
- Downloads: 0.403%
- Docker downloads count: 1.024%
- Maintainers (6)
rubygems.org: bunny
Easy to use, feature complete Ruby client for RabbitMQ 3.9 and later versions.
- Homepage: http://rubybunny.info
- Documentation: http://www.rubydoc.info/gems/bunny/
- Licenses: MIT
- Latest release: 2.24.0 (published 11 months ago)
- Last Synced: 2026-03-01T07:02:51.985Z (2 days ago)
- Versions: 170
- Dependent Packages: 345
- Dependent Repositories: 5,445
- Downloads: 71,589,913 Total
- Docker Downloads: 9,100,946
-
Rankings:
- Dependent packages count: 0.127%
- Downloads: 0.372%
- Dependent repos count: 0.429%
- Average: 0.888%
- Stargazers count: 1.42%
- Docker downloads count: 1.447%
- Forks count: 1.534%
- Maintainers (6)
proxy.golang.org: github.com/ruby-amqp/bunny
- Homepage:
- Documentation: https://pkg.go.dev/github.com/ruby-amqp/bunny#section-documentation
- Licenses: other
- Latest release: v1.7.0 (published about 11 years ago)
- Last Synced: 2026-02-27T13:02:06.433Z (4 days ago)
- Versions: 6
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Forks count: 1.643%
- Stargazers count: 1.798%
- Average: 5.955%
- Dependent packages count: 9.576%
- Dependent repos count: 10.802%
debian-11: ruby-bunny
- Homepage: https://github.com/ruby-amqp/bunny/
- Documentation: https://packages.debian.org/bullseye/ruby-bunny
- Licenses:
- Latest release: 2.14.4-4 (published 21 days ago)
- Last Synced: 2026-02-13T08:18:57.410Z (18 days ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
Dependencies
- rabbitmq_http_api_client ~> 2.2.0 development
- redcarpet >= 0 development
- ripl >= 0 development
- ripl-irb >= 0 development
- ripl-multi_line >= 0 development
- rspec ~> 3.11.0 development
- ruby-prof >= 0 development
- toxiproxy ~> 1.0.3 development
- yard >= 0 development
- rake >= 12.3.1
- amq-protocol ~> 2.3, >= 2.3.1
- sorted_set ~> 1, >= 1.0.2
- ubuntu 18.04 build
- shopify/toxiproxy latest
- actions/checkout v4 composite
- ruby/setup-ruby v1 composite
- rabbitmq 4-management docker
Score: 31.103638482405366