RabbitMQ
一个消息队列,统一所有队列
RabbitMQ 是免费且开源的软件。此外,Broadcom 还提供具有 24/7 专家支持的企业级商业产品。
免费且开源
RabbitMQ 是一个强大、企业级、开源的消息和流式传输代理,可实现应用程序的高效、可靠和通用的通信——非常适合分布式微服务、实时数据和物联网。
根据Mozilla 公共许可证 2.0免费提供,它拥有充满活力的全球社区。通过我们易于使用的文档深入了解,或贡献以塑造其未来!
商业产品
如果您运行的是关键任务应用程序,那么Tanzu RabbitMQ 企业级版本至关重要。它通过由产品开发工程师提供的 24/7 专家支持、更长的生命周期、灾难恢复、云成本节省和行业合规性,确保您的应用程序保持可靠和安全。
常见用例示例
以下是我们从社区或客户那里听到的一些常见用例。这应该有助于您更好地理解 RabbitMQ 是什么以及它如何提供帮助。
- 服务解耦
- RPC
- 流式传输
- 物联网
解耦相互关联的服务
您有一个后端服务需要向最终用户发送通知。有两个通知渠道:电子邮件和移动应用程序的推送通知。
后端将通知发布到两个队列,每个队列对应一个渠道。管理电子邮件和推送通知的程序订阅它们感兴趣的队列,并在通知到达时立即处理。
➡ 优势
- RabbitMQ 能够吸收流量高峰。
- 您可以在不中断整个服务的情况下对通知管理器进行一些维护。
远程过程调用
您拥有一家音乐厅。音乐会的门票在多个网站和实体售票点出售。所有渠道的订单都必须经过一个复杂的过程来确定客户是否成功获得门票,具体取决于可用性。网站或售票点期望在最短的时间内得到订单的答复。
订单会附带一个关联 ID 发布到 RabbitMQ 的一个队列中。推送订单的调用者随后订阅另一个队列,并等待带有相同关联 ID 的答复。
为了实现低延迟,经典队列非常适合此场景,但会牺牲一定的安全性——调用者仍然可以重试。如果订单不能丢失,您可能更倾向于使用确认和法定数量队列的组合,以确保消息一旦确认就是安全的。
此拓扑允许对订单进行串行处理,以便按先到先服务的顺序进行处理。这消除了对事务的需求。
➡ 优势
- RabbitMQ 客户端可以同时充当发布者和消费者。
- RabbitMQ 可用于分派 RPC 调用。
流式传输
您运营一个视频平台。当用户上传新视频时,在视频安全存储后,您需要完成多项任务:运行一些上传后分析、转码视频的较低质量副本、通知订阅作者创作的其他用户等等。
上传服务会将“新视频”事件追加到 RabbitMQ 流中。多个后端应用程序可以订阅该流并独立读取新事件。用户必须立即得到通知,但上传后分析可以稍后进行,例如每天一次。
➡ 优势
- 流非常高效,无需复制消息。
- 即使存在并发消费者,消费者也可以在流中前后移动。
物联网
您提供遍布整个星系的包裹递送服务。您拥有一群太空无人机,它们需要定期向托管在外星星球 *Kepler-438 b* 上的服务器报告其状态。不幸的是,网络连接并不理想……
每架太空无人机运行一个本地 RabbitMQ 独立节点,该节点缓冲它们的报告,直到与上游 RabbitMQ 建立连接。
当行星排列对齐时,无人机的 RabbitMQ 会将所有报告发送到上游 RabbitMQ。
➡ 优势
- RabbitMQ 部署可以串联起来以满足您服务中的不同需求,使用Shovel和Federation等功能。
- MQTT非常适合处理数百万并发连接。
用户怎么说?
RabbitMQ 被全球数百万用户使用。以下是一些用户对它的评价!
RabbitMQ 是我职业生涯中唯一一个没有给我带来麻烦的消息队列。
我在生产环境中运行 RabbitMQ 已超过 8 年,甚至曾经在一个拥有 180 辆公交车的车队中使用,每辆公交车都本地运行一个 RabbitMQ 实例。多年来从未出现过任何问题。