RabbitMQ
一个消息队列,连接万物
为何选择 RabbitMQ?
RabbitMQ 是一个可靠且成熟的消息和流式处理 Broker,易于部署在云环境、本地环境和您的本地机器上。目前全球有数百万用户正在使用它。
常见用例示例
以下是我们从社区或客户那里听到的一些常见用例。这应该有助于您更好地了解 RabbitMQ 是什么以及它如何提供帮助。
- 解耦服务
- RPC
- 流式传输
- 物联网 (IoT)
解耦互连服务
您有一个后端服务需要向最终用户发送通知。有两个通知渠道:电子邮件和移动应用程序的推送通知。
后端将通知发布到两个队列,每个渠道一个队列。管理电子邮件和推送通知的程序订阅它们感兴趣的队列,并在通知到达后立即处理。
➡ 优势
- RabbitMQ 吸收负载高峰。
- 您可以在不中断整个服务的情况下对通知管理器进行一些维护。
远程过程调用 (RPC)
您拥有一家音乐厅。演出门票在多个网站和实体售票亭销售。来自所有渠道的订单都必须经过复杂的流程,以确定客户是否实际获得了门票,具体取决于可用性。网站或售票亭希望在最短的时间内获得订单回复。
订单使用关联 ID 发布到 RabbitMQ 中的队列。推送订单的调用者随后订阅另一个队列,并等待具有相同关联 ID 的回复。
为了实现低延迟,经典队列是一个不错的选择,但这会以降低安全性为代价——调用者仍然可以重试。如果订单不能丢失,您可能更喜欢使用确认和仲裁队列的组合,以确保消息在确认后是安全的。
此拓扑允许对订单处理进行序列化,以便按先进先出的顺序服务它们。这避免了对事务的需求。
➡ 优势
- RabbitMQ 客户端可以同时作为发布者和消费者。
- RabbitMQ 可以用于分发 RPC 调用。
流式传输
您运营一个视频平台。当用户上传新视频时,当视频安全存储后,您需要完成多项任务:运行一些上传后分析、转码较低质量的视频副本、通知其他订阅了作者作品的用户等等。
上传服务将“新视频”事件附加到 RabbitMQ 流。多个后端应用程序可以订阅该流并独立于彼此读取新事件。用户必须立即收到通知,但上传后分析可以等待并每天运行一次。
➡ 优势
- 流非常高效,并避免了重复消息的需求。
- 即使有并发消费者,消费者也可以在流中来回移动。
许可协议如何?
自 2007 年首次发布以来,RabbitMQ 都是免费和开源软件。此外,Broadcom 还提供一系列商业产品。
免费和开源
RabbitMQ 在 Mozilla Public License 2.0 下获得许可,而大多数客户端库在 Apache Software License 2.0 和 Mozilla Public License 2.0 下获得双重许可。您可以自由地在非常广泛的上下文中使用和修改 RabbitMQ。
当然,我们非常欢迎贡献!无论是通过详细的错误报告、补丁、帮助他人、文档还是任何形式的倡导。事实上,贡献是支持该项目的最佳方式!请查看我们的贡献者页面。
商业产品
Broadcom 提供企业级 24/7 支持,您可以访问制作该产品的工程师。
此外,还提供一系列 RabbitMQ 商业产品。这些商业产品包括 RabbitMQ 的所有功能,以及一些额外的管理和高级功能,如热备复制、集群内数据压缩和基于 WebSocket 的 AMQP 1.0。
有关商业产品的列表,请查看运行 Tanzu RabbitMQ 以及免费和开源 RabbitMQ 发行版的各种方式表。
用户怎么说?
RabbitMQ 被全球数百万人使用。以下是我们的一些用户对它的评价!
RabbitMQ 是我职业生涯中唯一没有给我带来麻烦的消息 Broker。
我在生产环境中运行 RabbitMQ 超过 8 年了,甚至有一次在 180 辆公共汽车的车队中,每辆公共汽车都在本地运行一个 RabbitMQ 实例。在所有这些年中,从未出现过任何问题。