RabbitMQ: RabbitMQ 的使用示例

本文档属于介绍指南的一部分。您可以在此处查看完整指南:Stackhero for RabbitMQ 介绍

想象一个应用程序,允许用户通过一个操作下载过去一年的所有发票。此任务涉及同时生成多个 PDF 发票,这可能相当耗时。使用 RabbitMQ,应用程序可以发送 12 条包含发票详细信息的消息到一个 topic。专用的发票生成系统将响应这些消息,生成 PDF 文件并返回给 RabbitMQ。随后,应用程序检索 PDF 并交付给客户端。

该系统的真正强大之处在于其能够同时运行多个脚本来生成发票。使用相同的代码,您可以并行处理这 12 张发票!想象一下,100 个用户同时请求他们最近的 12 张发票。别担心,系统现在可以扩展并同时处理大量 PDF 文件!

现在,假设您希望通过电子邮件发送这些发票。您可以创建一个脚本,接受电子邮件地址和 PDF 文件作为输入,然后将 PDF 发送到指定的电子邮件。将此电子邮件发送脚本连接到 RabbitMQ,并配置您的发票生成器将 PDF 文件转发到 topic "emails"。就是这么简单。应用程序现在可以高效地生成和发送数十张发票。

可靠性是另一个关键优势。如果电子邮件脚本在发送发票时意外崩溃,RabbitMQ 确保发票不会丢失。另一个电子邮件脚本可以接手任务并无缝完成,保持用户满意度。RabbitMQ 增强了可靠性和一致性。

用例无数。如果您有多个系统或应用程序需要可靠通信,或者需要将耗时的任务委托给其他系统,RabbitMQ 可能是您需要的解决方案。

在像 Uber 或 Lyft 这样的应用中,当用户请求乘车时,会显示多条信息:

  • 乘车价格
  • 乘车时长
  • 预计接送时间
  • 路线

这些组件可以分为独立的服务,RabbitMQ 促进服务间通信。当用户请求乘车时,起点和目的地被发送到这些服务,服务并行计算所需数据。结果会在可用时显示给用户。如果计算乘车时长需要更长时间,其余信息仍会迅速显示,最大限度地减少用户的挫败感。

同样,在像 GrubHub 或 Deliveroo 这样的应用中,当用户选择食物时,会显示多个细节:

  • 食物可用性
  • 预计送达时间
  • 购物车总价

如同 Uber/Lyft 的例子,这些方面可以由独立的服务处理,使用 RabbitMQ 管理消息交换。