将 RabbitMQ 与 Spring Python 结合使用

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

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

在本文中,我们将展示如何使用 pika 被 Spring Python 轻松使用。 Spring Python 是用 Python 语言实现的 Spring 概念。 它包含许多功能,例如 依赖注入。 如果我们选择在 Python 中构建类似 Spring 的应用程序,则很容易利用 pika。

任何 Spring 应用程序的核心是一组蓝图或应用程序上下文。 Spring Python 和 Spring Java 都是如此。

正如你肯定注意到的那样,此上下文不是用 XML 编写的。 而是使用纯 Python 编写的。 这与 Spring Java Config 非常相似(此后已纳入核心 Spring Framework)。 这定义了发布者和订阅者。
  • 它们都配置为延迟初始化,因此我们可以使用一个上下文来支持两个启动脚本。 要创建股票行情自动收录器,我们需要创建相同的行情自动收录器应用程序,仅使用 Spring Python 容器。
  • 它们都配置有 scope.PROTOTYPE,以防我们想为给定情况获取多个副本。
我们还需要一个脚本来启动一个经纪公司,该经纪公司也使用 Spring Python 的容器来订阅这些消息。

下图显示了两个终端窗口。 后台窗口显示行情自动收录器应用程序正在运行,输出股票报价。 如果仔细观察,您会注意到最后一个参数是标识 ID 为 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 社区中所有即将举行的活动。

查看所有