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