RabbitMQ3.13.x之六_RabbitMQ使用场景
文章目录
- RabbitMQ3.13.x之六_RabbitMQ使用场景
- 1. 为什么选择 RabbitMQ?
- 1. 可互操作
- 2. 灵活
- 3. 可靠
- 2. 常见用户案例
- 1. 服务解耦
- 2. 远程过程调用
- 3. 流处理
- 4. 物联网
1. 为什么选择 RabbitMQ?
RabbitMQ 是一个可靠且成熟的消息传递和流代理,易于部署在云环境、本地和本地计算机上。它目前被全球数百万人使用。
1. 可互操作
RabbitMQ 支持多种开放标准协议,包括 AMQP 1.0 和 MQTT 5。有多个可用的客户端库,可以与您选择的编程语言一起使用,只需选择一个即可。没有供应商锁定!
2. 灵活
RabbitMQ 提供了许多选项,您可以组合这些选项来定义消息如何从发布者传递到一个或多个使用者。路由、筛选、流式处理、联合身份验证等,应有尽有。
3. 可靠
通过确认消息传递和跨集群复制消息的功能,您可以使用 RabbitMQ 确保您的消息是安全的。
2. 常见用户案例
1. 服务解耦
您有一个需要向最终用户发送通知的后端服务。有两个通知渠道:移动应用程序的电子邮件和推送通知。
后端将通知发布到两个队列,每个队列对应一个通道。管理电子邮件和推送通知的程序订阅他们感兴趣的队列,并在通知到达后立即处理通知。
➡ 好处
- RabbitMQ 吸收负载峰值。
- 您可以在不中断整个服务的情况下对通知管理器进行一些维护。
2. 远程过程调用
你拥有一个音乐厅。演出门票在多个网站和实体售票亭出售。来自所有渠道的订单必须经过一个复杂的过程,以确定客户是否有效地获得了他们的票证,具体取决于可用性。网站或售货亭希望在最短的时间内得到订单的答复。
订单将发布到 RabbitMQ 中具有相关 ID 的队列。然后,推送订单的调用方订阅另一个队列,并等待具有相同相关 ID 的应答。
为了实现低延迟,经典队列非常适合这里,但它的安全性较低 - 调用者仍然可以重试。如果订单不会丢失,您可能更愿意结合使用确认和仲裁队列,以确保消息在确认后是安全的。
此拓扑允许对订单的处理进行序列化,以先到先得的顺序提供服务。这避免了对事务的需要。
➡ 好处
- RabbitMQ 客户端可以同时是发布者和使用者。
- RabbitMQ 可用于调度 RPC 调用。
3. 流处理
您运行一个视频平台。当用户上传新视频时,当视频被安全存储时,您需要完成多项任务:运行一些上传后分析、对视频的低质量副本进行转码、通知订阅作者创作的其他用户,等等。
上传服务将“新视频”事件追加到 RabbitMQ 流中。多个后端应用程序可以订阅该流并相互独立地读取新事件。必须立即通知用户,但上传后分析可以等待并每天运行一次。
➡ 好处
- 流非常高效,避免了重复消息的需要。
- 即使有并发消费者,消费者也可以在流中来回切换。
4. 物联网
您在整个银河系提供包裹递送服务。你有一群太空无人机,它们需要定期向系外行星开普勒-438 b上托管的服务器报告它们的状态。不幸的是,网络连接不是很好…
每个太空无人机都运行一个本地 RabbitMQ 独立节点,该节点缓冲其报告,直到可以与上游 RabbitMQ 建立连接。
当行星对齐时,无人机的 RabbitMQ 将所有报告铲送到上游 RabbitMQ。
➡ 好处
- RabbitMQ 部署可以链接起来,以满足服务中的不同需求,使用铲子和联合等功能。
- MQTT 非常适合数百万个并发连接。