Clients Libraries and Developer Tools
Overview
RabbitMQ is officially supported on a number of operating systems and has several official client libraries. In addition, the RabbitMQ community has created numerous clients, adaptors and tools that we list here for your convenience.
Please contact us with suggestions for things you would like to see added to this list.
Note: items with a check mark (✓) are officially supported by Team RabbitMQ and VMware.
Load Testing and Workload Simulation
- ✓ PerfTest for quorum and classic queues
- ✓ Stream PerfTest for streams
Java and Spring
Java
- ✓ RabbitMQ Java client and its developer guide
- ✓ RabbitMQ Stream Java client
- ✓ RabbitMQ JMS client
- Reactor RabbitMQ, a reactive API for RabbitMQ based on Reactor and RabbitMQ Java Client
Spring Framework
.NET
Client libraries:
- ✓ RabbitMQ .NET Client (supports .NET Core and .NET 4.6.1+)
- ✓ RabbitMQ Stream .NET client
Higher level frameworks:
- NServiceBus, the most popular open-source service bus for .NET.
- Brighter, a Command Processor & Dispatcher implementation with support for task queues
- Cambion, an MIT licensed open-source distributed application framework for .NET
- EasyNetQ, an easy to use, opinionated .NET API for RabbitMQ
- MassTransit, an open-source distributed application framework for .NET.
Miscellaneous projects:
- RabbitMQTools, PowerShell module containing cmdlets to manage RabbitMQ
Ruby
- ✓ Bunny, a dead easy to use RabbitMQ Ruby client
- AMQP::Client, a lightweight and high performance AMQP Ruby client
- March Hare, a JRuby RabbitMQ client
- Sneakers, a fast background processing framework for Ruby and RabbitMQ
- Hutch, a conventions-based framework for writing (Ruby) services that communicate over RabbitMQ.
- Ruby RabbitMQ HTTP API client
- Ruby RabbitMQ clients blog
- Ruby RabbitMQ clients mailing list
Python
- ✓ pika, a pure-Python AMQP 0-9-1 client (source code, API reference)
- ✓ rstream: RabbitMQ Stream Python client
- rbfly: RabbitMQ Stream Python client
- aio-pika, a pure-Python AMQP 0-9-1 client built for Python 3 and asyncio (source code, API reference)
- aioamqp, a pure-Python AMQP 0-9-1 library using asyncio (source code, docs)
- FastStream, a powerful and easy-to-use Python library for building asynchronous services that interact with event streams. (source code, docs)
- amqp-client-python, Client with high level of abstraction for manipulation of messages in the event bus RabbitMQ. (source code, docs)
Miscellaneous projects:
- Celery, a distributed task queue for Django and pure Python
PHP
- ✓ php-amqplib a pure PHP, fully featured RabbitMQ client
- RabbitMqBundle incorporates RabbitMQ messaging with the Symfony2 web framework
- PECL AMQP library built on top of the RabbitMQ C client
- Thumper a library of messaging patterns
- CAMQP an extension for the Yii framework providing a gateway for RabbitMQ messaging
- AMQP Interop is a set of unified AMQP 0-9-1 interfaces in PHP and their implementations
- Bowler is a RabbitMQ client abstraction for Laravel
JavaScript and Node
- amqplib: RabbitMQ (AMQP 0-9-1) client for Node.js
- amqp-client: High performance client for both NodeJS and browsers (WebSocket), written in TypeScript
- rabbit.js: message patterns in node.js using RabbitMQ.
- rabbitmq-stream-js-client: RabbitMQ Stream NodeJS client.
- amqp-stats: a node.js interface for RabbitMQ management statistics
- Rascal: a config driven wrapper for amqp.node supporting multi-host connections, automatic error recovery, redelivery flood protection, transparent encryption and channel pooling.
- node-rabbitmq-client: RabbitMQ (AMQP 0-9-1) client library with auto-reconnect, zero dependencies, TypeScript support, and Promise-based API.
- ComQ: Production grade RPC and pub/sub.
Go
- ✓ RabbitMQ Go client
- ✓ RabbitMQ Stream Go client
- Rabbit Hole, RabbitMQ HTTP API client for Go
- amqpc, a load testing tool for RabbitMQ clusters
iOS and Android
- ✓ RabbitMQ Objective-C and Swift client from the RabbitMQ team
- Get Started with RabbitMQ on Android
Objective-C and Swift
- ✓ RabbitMQ Objective-C and Swift client from the RabbitMQ team
Rust
- amqprs, async Rust client, easy-to-use APIs, lock-free, tokio-based
- ✓ RabbitMQ Stream Rust client
- Lapin, a mature Rust client
- amiquip, a RabbitMQ client written in pure Rust
Crystal
- amqp-client, an AMQP 0-9-1 client for Crystal
Julia
- AMQPClient.jl, an AMQP 0-9-1 client for Julia
Other JVM Languages
Scala
- Lepus: a purely functional, non-blocking RabbitMQ client for Scala, Scala.js and Scala Native
- RabbitMQ client for Scala
- Akka-based RabbitMQ client for Scala
- Op-Rabbit, an opinionated Akka-based RabbitMQ client for Scala
- Processing RabbitMQ messages using Akka Streams
- RabbitMQ module for Play Framework
- Lift RabbitMQ module
Groovy and Grails
- Grails RabbitMQ plugin
- Grails with RabbitMQ for messaging
- Green Bunny, Groovy RabbitMQ client inspired by Bunny
Clojure
- Langohr, a Clojure RabbitMQ client built on top of the official Java one
- Bunnicula, Component based framework for Clojure built on top of the official Java one
JRuby
C and C++
- RabbitMQ C client
- SimpleAmqpClient, a C++ wrapper around rabbitmq-c
- amqpcpp, a C++ message library for RabbitMQ
- AMQP-CPP, a C++ RabbitMQ client
- Hareflow, a RabbitMQ stream client for C++
- RabbitMQ C stream client
- rmqcpp, reliable message delivery ON by default, easy to use, testable, async-capable C++ API
Monitoring
- See Monitoring and Prometheus guides.
Visualisation
- Rabbit Viz, a tool for visualizing exported definition files.
Unity 3D
Erlang
- ✓ RabbitMQ Erlang client
- RabbitMQ Stream Erlang client
- bunny_farm, a simplifying wrapper for the Erlang client
- RabbitMQ Messaging Patterns, a library of messaging patterns implemented in Erlang
Haskell
OCaml
Provisioning (Chef, Puppet, Docker, etc)
Database Integration
- Oracle Stored Procedures for RabbitMQ integration.
- RabbitMQ component for SQL Server Integration Services (SSIS).
- RabbitMQ integration with PostgreSQL's LISTEN notifications.
- RabbitMQ Riak Exchange: a custom exchange type for RabbitMQ that uses Riak as a backing store.
- Riak RabbitMQ postcommit Hook: a postcommit hook for Riak that sends any modified entries to RabbitMQ.
CLI Tools
- ✓ RabbitMQ CLI tools
- ✓ rabbitmqadmin, a command line tool that targets RabbitMQ HTTP API
- amqp-utils, command line utils for interacting with an AMQP based queue (in Ruby)
- amqptools, command line AMQP clients (in C)
- rabtap, RabbitMQ wire tap and swiss army knife command line tool (in go)
3rd party plugins
- RabbitMQ Global Fanout Exchange: a custom exchange type that fans out messages to every queue in the broker no matter what the bindings or vhosts.
- RabbitMQ Recent History Exchange: a custom exchange type that keeps track of the last 20 messages that have passed through such that newly bound queues receive a recent message history.
- SMTP gateway for RabbitMQ
Perl
- RabbitFoot, an asynchronous and multi-channel RabbitMQ client using Coro and AnyEvent::RabbitMQ
- AnyEvent::RabbitMQ, an asynchronous and multi-channel RabbitMQ client
OCaml
- NetAMQP, a native AMQP 0-9-1 client for Ocaml tested against RabbitMQ
Common Lisp
- cl-rabbit a Common Lisp client library for RabbitMQ
COBOL
Traffic Capture and Protocol Analysis
- Wireshark is the world's foremost network protocol analyzer
Miscellaneous
- XMPP adaptor
- RabbitMQ Adapter for Streambase for complex event processing (CEP)
- Delphi/Free Pascal RabbitMQ Client
- bevis: a syslog listener that forwards messages over RabbitMQ
- rabbitmq-memcached: a memcached adapter for RabbitMQ that allows you to use the memcache protocol to get or publish a message from or to RabbitMQ
- flume-amqp-plugin: a plugin for Flume (a Hadoop data loader) that allows you to use a RabbitMQ node as a data source.
- Fudge Messaging Format: fudge is a data encoding system that is hierarchical, typesafe, binary and self-describing. It is messaging protocol-agnostic.
- QDB: Persistent Message Queues with Replay: queue backup and replay over AMQP 0-9-1. Includes REST API
- AMQProxy: An AMQP 0-9-1 proxy, with connection and channel pooling/reusing
- amqpcat: A netcat-like CLI tool for producing and consuming AMQP 0-9-1 messages.