客户端库和开发人员工具
概述
RabbitMQ 在多种操作系统上均获得官方支持,并拥有多个官方客户端库。此外,RabbitMQ 社区还创建了许多客户端、适配器和工具,为了方便起见,我们在此列出它们。
如果您有希望添加到此列表中的建议,请联系我们。
注意:带有对勾 (✓) 的项目由 RabbitMQ 团队和 VMware 官方支持。
管理工具
内置工具
- 核心 CLI 工具:
rabbitmqctl,rabbitmq-diagnostics,rabbitmq-upgrade,rabbitmq-queues等
HTTP API
rabbitmqadminv2:由 RabbitMQ 团队开发的基于 HTTP API 的管理工具
负载测试和工作负载模拟
- ✓ PerfTest 用于通过 AMQP 0.9.1 进行发布和消费
- ✓ Stream PerfTest 用于通过 流协议 (Stream Protocol) 进行发布和消费
- ✓ OMQ 用于通过 AMQP 1.0、AMQP 0.9.1、STOMP 和 MQTT 3.1/3.1.1/5.0 进行发布和消费
Java 和 Spring
Java
- ✓ RabbitMQ AMQP 1.0 Java 客户端 和 AMQP 1.0 客户端库指南
- ✓ RabbitMQ Stream Java 客户端
- ✓ RabbitMQ JMS 客户端
- ✓ RabbitMQ AMQP 0.9.1 Java 客户端 及其 开发人员指南
- Reactor RabbitMQ,基于 Reactor 和 RabbitMQ Java 客户端 的响应式 RabbitMQ API
Spring 框架
.NET
客户端库
- ✓ RabbitMQ AMQP 1.0 .NET 客户端 和 AMQP 1.0 客户端库指南
- ✓ RabbitMQ Stream .NET 客户端
- ✓ RabbitMQ AMQP 0.9.1 .NET 客户端(支持 .NET Core 和 .NET 4.6.1+)
高级框架
- NServiceBus,最流行的 .NET 开源服务总线。
- Brighter,一个支持任务队列的命令处理器和调度程序实现
- Cambion,一个适用于 .NET 的 MIT 许可开源分布式应用程序框架
- EasyNetQ,一个易于使用且带有特定观点 (opinionated) 的 .NET RabbitMQ API
- MassTransit,一个适用于 .NET 的开源分布式应用程序框架。
- Rebus,一个适用于 .NET 的 MIT 许可开源服务总线。
杂项项目
- RabbitMQTools,包含用于管理 RabbitMQ 的 cmdlet 的 PowerShell 模块
Ruby
- ✓ Bunny,一个极其简单易用的 RabbitMQ Ruby 客户端
- AMQP::Client,一个轻量级且高性能的 AMQP Ruby 客户端
- March Hare,一个 JRuby RabbitMQ 客户端
- Sneakers,一个用于 Ruby 和 RabbitMQ 的快速后台处理框架
- Hutch,一个基于约定的框架,用于编写通过 RabbitMQ 通信的 (Ruby) 服务。
- Ruby RabbitMQ HTTP API 客户端
- Ruby RabbitMQ 客户端博客
- Ruby RabbitMQ 客户端邮件列表
Python
- ✓ RabbitMQ AMQP 1.0 Python 客户端 和 AMQP 1.0 客户端库指南
- ✓ pika,一个纯 Python 编写的 AMQP 0-9-1 客户端 (源代码, API 参考)
- ✓ rstream:RabbitMQ Stream Python 客户端
- rbfly:RabbitMQ Stream Python 客户端
- aio-pika,一个为 Python 3 和 asyncio 构建的纯 Python AMQP 0-9-1 客户端 (源代码, API 参考)
- aioamqp,一个使用 asyncio 的纯 Python AMQP 0-9-1 库 (源代码, 文档)
- FastStream,一个功能强大且易于使用的 Python 库,用于构建与事件流交互的异步服务。 (源代码, 文档)
- amqp-client-python,一个用于操作 RabbitMQ 事件总线消息的、高度抽象的客户端。 (源代码, 文档)
- Repid,一个简单、快速且可扩展的异步任务队列框架,内置 AsyncAPI 3.0 模式生成和 AMQP 1.0 客户端实现。 (源代码, 文档)
杂项项目
- Celery,一个适用于 Django 和纯 Python 的分布式任务队列
PHP
- ✓ php-amqplib 一个纯 PHP 编写、功能齐全的 RabbitMQ 客户端
- RabbitMqBundle 将 RabbitMQ 消息传递整合到 Symfony2 Web 框架中
- PECL AMQP 库,构建在 RabbitMQ C 客户端 之上
- Thumper 一个消息模式库
- CAMQP 一个用于 Yii 框架的扩展,提供 RabbitMQ 消息传递网关
- AMQP Interop 是一套 PHP 中统一的 AMQP 0-9-1 接口及其实现
- Bowler 是 Laravel 的一个 RabbitMQ 客户端抽象层
JavaScript 和 Node
- amqplib: Node.js 的 RabbitMQ (AMQP 0-9-1) 客户端
- amqp-client: 用 TypeScript 编写的高性能客户端,适用于 NodeJS 和浏览器 (WebSocket)
- rabbit.js: 使用 RabbitMQ 在 node.js 中实现消息模式
- rabbitmq-stream-js-client: RabbitMQ Stream NodeJS 客户端
- amqp-stats: 一个用于 RabbitMQ 管理统计信息的 node.js 接口
- Rascal: 一个 amqp.node 的配置驱动包装器,支持多主机连接、自动错误恢复、重新投递洪泛保护、透明加密和通道池。
- node-rabbitmq-client: RabbitMQ (AMQP 0-9-1) 客户端库,具有自动重连、零依赖、TypeScript 支持和基于 Promise 的 API。
- ComQ: 生产级的 RPC 和发布/订阅。
Go
- ✓ RabbitMQ AMQP 1.0 Go 客户端 和 AMQP 1.0 客户端库指南
- ✓ RabbitMQ Stream Go 客户端
- ✓ RabbitMQ AMQP 0.9.1 Go 客户端
- Rabbit Hole, 用于 Go 的 RabbitMQ HTTP API 客户端
- amqpc,一个用于 RabbitMQ 集群的负载测试工具
iOS 和 Android
- ✓ Swift 6 AMQP 0-9-1 客户端(来自 RabbitMQ 团队)
- ✓ Swift 6 RabbitMQ HTTP API 客户端(来自 RabbitMQ 团队)
Swift
- ✓ Swift 6 AMQP 0-9-1 客户端(来自 RabbitMQ 团队)
- ✓ Swift 6 RabbitMQ HTTP API 客户端(来自 RabbitMQ 团队)
Rust
- amqprs,异步 Rust 客户端,易于使用的 API,无锁,基于 tokio
- ✓ RabbitMQ Stream Rust 客户端
- Lapin,一个成熟的 Rust 客户端
- amiquip,一个用纯 Rust 编写的 RabbitMQ 客户端
Crystal
- amqp-client,一个 Crystal 的 AMQP 0-9-1 客户端
Julia
- AMQPClient.jl,一个 Julia 的 AMQP 0-9-1 客户端
其他 JVM 语言
Scala
- Lepus: 一个纯函数式、非阻塞的 RabbitMQ 客户端,适用于 Scala、Scala.js 和 Scala Native
- Scala 版 RabbitMQ 客户端
- 基于 Akka 的 Scala 版 RabbitMQ 客户端
- Op-Rabbit,一个基于 Akka 的 Scala 版 RabbitMQ 客户端
- Play Framework 的 RabbitMQ 模块
- Lift RabbitMQ 模块
Groovy 和 Grails
Clojure
JRuby
Kotlin
C 和 C++
- RabbitMQ C 客户端
- SimpleAmqpClient,一个基于 rabbitmq-c 的 C++ 包装器
- amqpcpp,一个用于 RabbitMQ 的 C++ 消息库
- AMQP-CPP,一个 C++ RabbitMQ 客户端
- Hareflow,一个适用于 C++ 的 RabbitMQ 流客户端
- RabbitMQ C 流客户端
- rmqcpp,默认开启可靠消息投递、易于使用、可测试、支持异步的 C++ API
监控
- 请参阅 监控 和 Prometheus 指南。
可视化
- RabbitGUI,一个用于可视化和管理死信队列的工具。
Unity 3D
Erlang
- ✓ RabbitMQ AMQP 1.0 Erlang 客户端
- ✓ RabbitMQ AMQP 0.9.1 Erlang 客户端
- RabbitMQ Stream Erlang 客户端
- bunny_farm,一个用于 Erlang 客户端的简化包装器
- RabbitMQ 消息模式,一个在 Erlang 中实现的消息模式库
Haskell
OCaml
配置与部署 (Chef, Puppet, Docker 等)
数据库集成
- 用于 RabbitMQ 集成的 Oracle 存储过程。
- SQL Server Integration Services (SSIS) 的 RabbitMQ 组件.
- RabbitMQ 与 PostgreSQL LISTEN 通知的集成。
- RabbitMQ Riak Exchange:一种使用 Riak 作为后端存储的自定义交换机类型。
- Riak RabbitMQ postcommit Hook:一个 Riak 的提交后挂钩,将任何修改的条目发送到 RabbitMQ。
CLI 工具
- ✓ RabbitMQ CLI 工具
- ✓ rabbitmqadmin,一个针对 RabbitMQ HTTP API 的命令行工具
- amqp-utils,用于与基于 AMQP 的队列进行交互的命令行工具 (Ruby 编写)
- amqptools,命令行 AMQP 客户端 (C 编写)
- rabtap,RabbitMQ 线路监听器和瑞士军刀命令行工具 (Go 编写)
第三方插件
- RabbitMQ 全局广播交换机 (Global Fanout Exchange):一种自定义交换机类型,无论绑定或 vhost 如何,都会将消息广播到代理中的每个队列。
- RabbitMQ 近期历史交换机 (Recent History Exchange):一种自定义交换机类型,跟踪最近 20 条消息,以便新绑定的队列可以接收近期的消息历史。
- RabbitMQ 的 SMTP 网关
Perl
- RabbitFoot,一个使用 Coro 和 AnyEvent::RabbitMQ 的异步多通道 RabbitMQ 客户端
- AnyEvent::RabbitMQ,一个异步多通道 RabbitMQ 客户端
OCaml
- NetAMQP,一个在 RabbitMQ 上测试过的本地 Ocaml AMQP 0-9-1 客户端
Common Lisp
- cl-rabbit 一个 RabbitMQ 的 Common Lisp 客户端库
COBOL
流量捕获与协议分析
- Wireshark 是全球领先的网络协议分析器
杂项
- XMPP 适配器
- Delphi/Free Pascal RabbitMQ 客户端
- bevis: 一个通过 RabbitMQ 转发消息的系统日志 (syslog) 监听器
- rabbitmq-memcached: 一个 RabbitMQ 的 memcached 适配器,允许您使用 memcache 协议从 RabbitMQ 获取或发布消息
- flume-amqp-plugin: Flume(Hadoop 数据加载器)的一个插件,允许您使用 RabbitMQ 节点作为数据源。
- Fudge 消息格式: Fudge 是一种分层、类型安全、二进制且自描述的数据编码系统。它与消息协议无关。
- AMQProxy: 一个 AMQP 0-9-1 代理,支持连接和通道池化/重用
- amqpcat: 一个类似 netcat 的 CLI 工具,用于生产和消费 AMQP 0-9-1 消息。