JMS v2.0

連線能力 > 協定 > JMS 2.0

ActiveMQ Classic 5.x 對 JMS v3.1 和 v2.0 的支援正在進行中。

轉換方法

最初,ActiveMQ Classic 用戶端將不支援所有 JMS 2.0 功能,並且對於不支援的方法和功能,例如使用 CompletionListener 的非同步傳送、傳送具有傳遞延遲的消息以及使用共享主題消費者,將拋出 UnsupportedOperationException (RuntimeException)。

隨著後續版本中功能的實現,這些例外將被完全正常運作的方法、範例和單元測試取代。有關實施進度的更多詳細信息,請參閱後續/下方。

Jakarta Messaging 3.1 支援

對 JMS 2.0 的支援也為過渡到 Jakarta Messaging 3.1 及其新的 jakarta.jms API 命名空間(而不是歷史的 javax.jms 命名空間)奠定了基礎。

  • Java Enterprise 功能的未來標準
  • Spring 6 的需求
  • Jakarta EE 9 + 10 的需求。
  • 僅 JMS API Java 套件名稱變更
  • ActiveMQ Classic 套件名稱不變

這允許僅透過更新相依性來進行轉換,而無需在未來重新編碼!

用戶端 jar API 套件 版本 註解
activemq-client jakarta.jms 6.0.x Jakarta Messaging 3.1 支援。適用於嵌入式代理程式和 VM 傳輸。
activemq-client javax.jms 5.18.x JMS 2.0 支援。適用於嵌入式代理程式和 VM 傳輸。
activemq-client-jakarta jakarta.jms 5.18.1+ 用於初始僅用戶端 Jakarta Messaging 3.1 支援的過渡模組。不能與使用 javax.jms API 的 activemq-client 或代理程式在同一個 JVM 中使用。請注意,這表示沒有嵌入式代理程式/VM 傳輸支援,只有遠端代理程式。

沒有功能上的變更,這純粹是 Java 套件命名變更

import javax.jms.ConnectionFactory
import javax.jms.Message
import javax.jms...

變成

import jakarta.jms.ConnectionFactory
import jakarta.jms.Message
import jakarta.jms...

若要在 Maven 中使用 ActiveMQ Classic 5.18.x 提供的 Jakarta 過渡用戶端

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-client-jakarta</artifactId>
  <version>${activemq.version}</version>
</dependency>

注意:在 ActiveMQ Classic 6.0 中,activemq-client-jakarta 模組已移除,因為不再需要。

Spring bean 用法

Spring bean 定義不會因 Jakarta 支援而變更。

<bean class="org.apache.activemq.ActiveMQConnectionFactory">

ActiveMQ Classic JMS v3.1、v2.0 實作進度

實作方法可能會變更。請務必在發行說明中驗證功能。

歡迎用戶回饋!請在 JIRA 上評論您的問題和意見。

JIRA 狀態 目標版本 已完成版本 功能 註解
AMQ-7309 已合併 5.18.0 5.18.0 JMS v2.0 API 相依性 ActiveMQ Classic 將附帶 JMS v2.0 相依性 jar
AMQ-8322 已合併 5.18.0 5.18.0 JMSContext 簡化的 JMS Context 物件支援
AMQ-8322 已合併 5.18.0 5.18.0 JMSRuntimeException 將 JMSException 轉換為 JMSRuntimeException
AMQ-8322 已合併 5.18.0 5.18.0 JMSConsumer 消費消息
AMQ-8322 已合併 5.18.0 5.18.0 JMSProducer 生產消息
AMQ-8321 已合併 5.18.0 5.18.0 GetBody/isBodyAssignable 支援使用 Class<?> 檢查主體類型
AMQ-8325 已合併 6.0.0, 5.18.3 6.0.0, 5.18.3 XA 連線方法 使用 XA 交易時更新的方法
AMQ-8464 PR #1046 6.1.0, 5.18.4   JMSConsumer .receiveBody(Class) 方法
AMQ-8320 PR #982 6.1.0, 5.18.4   傳遞延遲 支援消息傳遞延遲功能
AMQ-8324 PR #1045 6.1.0, 5.18.4   JMSProducer 功能 完成監聽器非同步傳送支援
AMQ-8323   6.2.0, 5.18.5   共享主題消費者 從主題訂閱消費的多個消費者(類似佇列)

功能註解

JMS 物件 功能 註解
JMSProducer disableMessageID ActiveMQ Classic 不支援停用 MessageID 的選擇性功能

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。Copyright © 2024, The Apache Software Foundation。在 Apache License 2.0 下授權。