将 RabbitMQ 与 Spring Python 结合使用

工程 | Greg L. Turnquist | 2010 年 9 月 20 日 | ...

RabbitMQ 是一个强大的消息代理,基于 高级消息队列协议 (AMQP)。在之前的帖子中,我们研究了如何构建一个 Python 股票行情程序。我们比较了使用 RabbitMQ 的 pikapy-amqplib,以及如何轻松地在两者之间切换,只需进行最少的更改。

在本文中,我们将展示如何轻松地通过 Spring Python 使用 pika。Spring Python 是 Spring 概念在 Python 语言中的一种实现。它包含了许多功能,例如 依赖注入。如果我们选择用 Python 构建一个类似 Spring 的应用程序,那么利用 pika 将会非常容易。

任何 Spring 应用程序的核心都是一组蓝图或应用程序上下文。对于 Spring Python 和 Spring Java 来说,这是相同的。

正如我确信你已经注意到的,这个上下文不是用 XML 编写的。而是用纯 Python 编写的。这与 Spring Java Config(后来已并入 Spring 核心框架)非常相似。这定义了一个发布者和一个订阅者。
  • 它们都配置为惰性初始化,因此我们可以使用一个上下文来支持两个启动脚本。要创建一个股票行情分析器,我们需要创建相同的行情分析器应用程序,只是使用 Spring Python 容器。
  • 它们都配置为 scope.PROTOTYPE,以防我们在特定情况下想要获取多个副本。
我们还需要一个脚本来启动一家订阅这些消息的经纪公司,同样使用 Spring Python 的容器。

下图显示了两个终端窗口。背景窗口显示正在运行的行情分析器应用程序,输出股票行情。如果你仔细看,你会注意到最后一个参数是一个消息,标识符是 290。前景窗口显示了订阅股票行情的经纪公司。它刚刚收到了消息 290,然后打印出了其当前净资产。

[caption id="attachment_5659" align="alignnone" width="784" caption="在 Spring Python 中运行的行情分析器和经纪公司"][/caption]

由于我们使用 Spring Python 来注入基于 pika 的 RabbitMQ 客户端,我们可以轻松地将其切换为其他客户端。正如上一篇博文中所指出的,这有助于我们避免锁定,而是根据重要因素选择解决方案:技术优势、供应商支持和业务需求。Pika 已被证明是一个活跃的项目,并得到了开发 RabbitMQ 代理的同一团队的支持。从 py-amqplib 迁移到它很容易,并且支持我们正在使用的任何工具,包括我们刚刚看到的 Spring Python。将来如有需要,迁移到另一个库也将很容易。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有