JMS (Java 訊息服務)

Spring 提供了一個 JMS 整合框架,以類似 Spring 整合 JDBC API 的方式,簡化了 JMS API 的使用。

JMS 大致可以分為兩個功能領域,即訊息的生產和消費。JmsTemplate 類別用於訊息生產和同步訊息接收。對於類似 Jakarta EE 的訊息驅動 Bean 樣式的非同步接收,Spring 提供了許多訊息監聽器容器,您可以使用這些容器來建立訊息驅動 POJO (MDP)。Spring 也提供了一種宣告式方式來建立訊息監聽器。

org.springframework.jms.core 套件提供了使用 JMS 的核心功能。它包含 JMS 樣板類別,這些類別透過處理資源的建立和釋放來簡化 JMS 的使用,就像 JdbcTemplate 對於 JDBC 所做的那樣。Spring 樣板類別通用的設計原則是提供輔助方法來執行常見操作,對於更複雜的用法,則將處理任務的本質委派給使用者實作的回呼介面。JMS 樣板遵循相同的設計。這些類別提供了各種便利方法,用於傳送訊息、同步消費訊息,以及向使用者公開 JMS 會話和訊息生產者。

org.springframework.jms.support 套件提供了 JMSException 轉換功能。此轉換將已檢查的 JMSException 階層轉換為鏡像的未檢查例外階層。如果存在任何提供者特定的已檢查 jakarta.jms.JMSException 子類別,則此例外會被包裝在未檢查的 UncategorizedJmsException 中。

org.springframework.jms.support.converter 套件提供了 MessageConverter 抽象化,用於在 Java 物件和 JMS 訊息之間進行轉換。

org.springframework.jms.support.destination 套件提供了各種策略來管理 JMS 目的地,例如為儲存在 JNDI 中的目的地提供服務定位器。

org.springframework.jms.annotation 套件提供了必要的基礎架構,以支援使用 @JmsListener 進行註解驅動的監聽器端點。

org.springframework.jms.config 套件為 jms 命名空間提供了剖析器實作,以及用於組態監聽器容器和建立監聽器端點的 Java 組態支援。

最後,org.springframework.jms.connection 套件提供了 ConnectionFactory 的實作,適用於獨立應用程式。它還包含 Spring 的 JMS PlatformTransactionManager 實作(巧妙地命名為 JmsTransactionManager)。這允許將 JMS 作為交易資源無縫整合到 Spring 的交易管理機制中。

從 Spring Framework 5 開始,Spring 的 JMS 套件完全支援 JMS 2.0,並且需要在執行時期存在 JMS 2.0 API。我們建議使用 JMS 2.0 相容的供應商。

如果您碰巧在系統中使用較舊的訊息代理程式,您可以嘗試將現有代理程式世代的驅動程式升級到 JMS 2.0 相容的驅動程式。或者,您也可以嘗試針對基於 JMS 1.1 的驅動程式執行,只需將 JMS 2.0 API jar 檔案放在類別路徑中,但僅針對您的驅動程式使用 JMS 1.1 相容的 API。Spring 的 JMS 支援預設遵循 JMS 1.1 慣例,因此透過相應的組態,它確實支援這種情境。但是,請僅將此視為過渡情境。