將 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 社群所有即將舉行的活動。

檢視所有