7.3. 消息传递应用程序更改
本节介绍 JBoss EAP 7 中的各种消息传递应用更改。另外,您还可以了解更多有关如何:
- 更改 Jakarta Messaging 部署描述符
- 更新外部 Jakarta Messaging 客户端
- 替换已弃用的地址设置属性
- 配置所需的消息传递应用程序更改
7.3.1. 替换或更新 Jakarta Messaging 部署描述符 复制链接链接已复制到粘贴板!
从 JBoss EAP 7 开始,由命名模式 -jms.xml 标识的专有 HornetQ 消息传递资源部署描述符文件无法正常工作。以下是 JBoss EAP 6 中的 Java Message Service 资源部署描述符文件的示例:
如果您在上一发行版本中的应用程序中使用 -jms.xml Java Message Service 部署描述符,您可以转换应用程序以使用 Jakarta EE 平台的 Resource Definition 和 Configuration 部分中指定的标准部署描述符,或者您可以更新部署描述符以使用 messaging-activemq-deployment 模式。如果您选择更新描述符,您需要进行以下修改:
- 将命名空间从 "urn:jboss:messaging-deployment:1.0" 改为 "urn:jboss:messaging-activemq-deployment:1.0"。
-
将
<hornetq-server>元素的名称改为<server>。
修改的文件应类似以下示例。
7.3.2. 替换 HornetQ API 复制链接链接已复制到粘贴板!
JBoss EAP 6 包含 org.hornetq 模块,允许您在应用源代码中使用 HornetQ API。
Apache ActiveMQ Artemis 取代了 JBoss EAP 7 中的 HornetQ,因此您必须迁移使用 HornetQ API 的任何代码以使用 Apache ActiveMQ Artemis API。此 API 的库包含在 org.apache.activemq.artemis 模块中。
ActiveMQ Artemis 是 HornetQ 的演进,因此许多概念仍然适用。
7.3.3. 替换已弃用的地址设置属性 复制链接链接已复制到粘贴板!
使用 auto-create-jms-queues、 、auto-delete-jms-queues auto-create-jms-topics 和 auto-delete-jms-topics 属性自动创建和自动删除主题和队列的功能仅在 JBoss EAP 7 中完全配置。这些属性已弃用,它们 仅作为技术预览功能提供,且不被支持。
您必须使用以下替换属性替换这些已弃用的属性。
弃用的属性不再配置此功能,因为 JBoss EAP 8.0 无效。不支持替换属性。它们仅作为在最佳工作基础之上迁移的方法。
| 弃用的属性 | 替换属性 |
|---|---|
| auto-create-jms-queues | auto-create-queues |
| auto-delete-jms-queues | auto-delete-queues |
| auto-create-jms-topics | auto-create-addresses |
| auto-delete-jms-topics | auto-delete-addresses |
在 JBoss EAP 6 中,默认的地址设置属性设为 false。从 JBoss EAP 7 开始,默认情况下替换属性设为 true。
如果您希望保留 JBoss EAP 6 行为,您必须将替换属性设置为 false。
有关这些替换属性的更多信息,请参阅 JBoss EAP 7.4 配置消息传递 指南中的 地址设置属性。
7.3.4. JBoss EAP 7 所需的消息传递应用程序更改 复制链接链接已复制到粘贴板!
从 JBoss EAP 7.2 开始,如果客户端应用直接依赖于 INVENTORY 客户端 JAR,例如: artemis-jms-client、artemis-commons、artemis-core-client,或 artemis-selector,那么您必须在 pom.xml 文件中为 wildfly-client-properties 添加以下依赖关系。
<dependency> <groupId>org.jboss.eap</groupId> <artifactId>wildfly-client-properties</artifactId> </dependency>
<dependency>
<groupId>org.jboss.eap</groupId>
<artifactId>wildfly-client-properties</artifactId>
</dependency>
在从旧的 JBoss EAP 7 客户端中调用 message.getJMSReplyTo() 时,避免 JMSRuntimeException,如 JBEAP-15889 所述。