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

檢視所有