将RabbitMQ与Spring Python结合使用

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

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

在本文中,我们将展示如何 Spring Python 可以轻松地使用 pika。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 社区中所有即将举行的活动。

查看全部