Apache Pulsar 的實驗性 Spring 支援介紹

工程 | Soby Chacko | 2022 年 8 月 16 日 | ...

我們很高興地宣佈,我們正在孵化一個新的 實驗性 Spring 專案,用於 Apache Pulsar。 該專案旨在為編寫與 Apache Pulsar 互動的 Java 應用程式提供 Spring 友好的 API、構建塊和程式設計模型。

Apache Pulsar 是一個流行的訊息傳遞系統,在企業訊息傳遞和流媒體領域擁有不斷增長的開發者生態系統。 以下是使用 Apache Pulsar 進行基於訊息傳遞的軟體應用程式的一些主要特性和優點

  • Apache Pulsar 透過各種訂閱模型,同時提供 RabbitMQ、ActiveMQ 等的傳統佇列語義以及 Apache Kafka 的基於日誌的結構。
  • Apache Pulsar 中的 Broker 是無狀態的,儲存不是 Broker 的一部分。 相反,它使用另一個名為 Bookkeeper 的 Apache 專案將儲存層與 Broker 分離。 由於這種基本設計,擴充套件 Apache Pulsar Broker 很容易。
  • Apache Pulsar 使用分散式日誌,稱為賬本 (Ledgers),透過 Bookkeeper 進行管理。 這些賬本分佈在 Bookkeeper 的多個節點上。
  • 將儲存層(賬本)與服務層(Broker)分離的另一個優點是可以分別擴充套件它們。
  • 主題分割槽是一個特性,而不是一個要求。 只有在用例需要時才需要使用分割槽。
  • 內建的異地複製機制。
  • 內建的多租戶功能。

從歷史上看,Spring 為流行的基於 JVM 的訊息傳遞系統提供了全面的支援。 JMS 支援是 Spring Framework 核心的一部分。 Spring 透過 Spring 生態系統中相關的對應元件(Spring AMQPSpring for Apache Kafka)為 AMQP 和 Kafka 提供了廣泛的支援。 此外,流行的 Spring 專案(例如 Spring IntegrationSpring Cloud Stream)中提供了各種與訊息傳遞相關的支援。 由於 Apache Pulsar 作為訊息代理正在增長,因此我們開始嘗試一個新的 Spring 專案,專門使用 Java 客戶端 for Apache Pulsar。

從應用程式開發人員的角度來看,Apache Pulsar 提供了許多與 Apache Kafka 相同的功能,例如建立生產者來發布,建立消費者來消費等等。 因此,在實驗性的 Spring for Apache Pulsar 中,我們基於 Spring for Apache Kafka 的基本設計原則對設計進行建模。 如果您熟悉 Spring for Apache Kafka 的 API,您可能會注意到 Spring for Apache Pulsar 中的許多相似之處。 考慮到這一點,以下是 Spring for Apache Pulsar 的一些當前主題和功能

  • PulsarTemplate 用於使用單行傳送方法快速釋出到 Pulsar 主題。
  • 提供 PulsarListener 註解來編寫高階 Pulsar 消費者。
  • MessageListenerContainer 基礎設施來支援 PulsarListener。
  • 基於記錄和基於批處理的 PulsarListener 消費。
  • Pulsar Producer 和 Consumer 工廠
  • 框架自動進行訊息確認。
  • 各種確認模式(例如,MANUALRECORDBATCH 等)。
  • Spring Boot 自動配置元件。

此功能列表並非詳盡無遺,但我們希望此列表是一個良好的起點。

由於我們仍處於這項計劃的起步階段,我們非常感謝任何反饋。 特別是如果您是編寫基於 Apache Pulsar 的應用程式的 Spring 使用者,我們很樂意聽到您使用此庫的體驗。

我們計劃很快向該框架新增更多功能和特性。 我們歡迎來自社群的任何形式的錯誤報告、功能請求、Pull Request 和其他型別的反饋。

Spring for Apache Pulsar 資源

Spring for Apache Pulsar GitHub 倉庫

參考文件

示例應用程式

獲取 Spring 新聞通訊

保持與 Spring 新聞通訊的聯絡

訂閱

搶佔先機

VMware 提供培訓和認證來加速您的進步。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群中所有即將舉行的活動。

檢視全部