JMS v2.0

连接性 > 协议 > JMS 2.0

ActiveMQ Classic 5.x 对 JMS v3.1 和 v2.0 的支持正在进行中。

过渡方法

最初,ActiveMQ Classic 客户端将不支持所有 JMS 2.0 功能,并将为不支持的方法和功能抛出 UnsupportedOperationException (RuntimeException),例如使用 CompletionListener 进行异步发送、发送具有延迟交付的消息以及使用共享主题使用者。

随着功能在后续版本中实现,这些异常将被完全功能的方法、示例和单元测试所取代。有关实现进度的更多详细信息,请参见下文/下面。

Jakarta Messaging 3.1 支持

对 JMS 2.0 的支持也使构建此功能成为可能,从而可以过渡到 Jakarta Messaging 3.1 及其新的 jakarta.jms API 命名空间,而不是历史上的 javax.jms 命名空间。

  • Java 企业功能的未来标准
  • 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 上下文对象支持
AMQ-8322 合并 5.18.0 5.18.0 JMSRuntimeException 将 JMSExceptions 转换为 JMSRuntimeExceptions
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 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。