5.3. 消息传递应用程序更改
5.3.1. 替换或更新 Jakarta Messaging 部署描述符 复制链接链接已复制到粘贴板!
命名模式 -jms.xml 标识的专有 HornetQ 消息资源部署描述符文件在 JBoss EAP 7 中不再起作用。以下是 JBoss EAP 6 中 Jakarta Messaging 资源部署描述符文件的示例:
如果您在上一版本中使用 -jms.xml Jakarta Messaging 部署描述符,您可以转换应用程序以使用 Jakarta EE 平台第 EE.5.18 部分中指定的标准部署描述符,或者您可以更新部署描述符以使用 messaging-activemq-deployment 模式。如果您选择更新描述符,则需要进行以下修改:
- 将命名空间从 "urn:jboss: messaging-deployment:1.0" 更改为 "urn:jboss: messaging-activemq-deployment:1.0"。
-
将
<hornetq-server>元素的名称改为<server>。
修改后的文件应当类似于下例所示。
有关与消息传递相关的服务器配置更改的详情,请参考消息传递服务器配置变化。
5.3.2. 更新外部 Jakarta Messaging 客户端 复制链接链接已复制到粘贴板!
JBoss EAP 7 仍然支持 Jakarta Messaging 1.1 API,因此您无需修改代码。
JBoss EAP 7 中更改了默认远程连接器和端口。有关此更改的详情,请参阅更新远程 URL Connector 和端口。
如果您使用 migrate 操作迁移服务器配置,则会保留旧的设置,您不需要更新您的 ImagePrepare _URL。但是,如果使用新的 JBoss EAP 7 默认配置运行,您必须更改客户端代码中的 BK_URL,以使用新的 http-remoting://localhost:8080 设置。如需更多信息,请参阅 迁移远程命名客户端代码。
如果您计划迁移代码以使用 Jakarta Messaging 2.0 API,请参见 helloworld-jms quickstart 了解工作示例。
5.3.3. 替换 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 的演进,因此许多概念仍然适用。
5.3.4. 替换已弃用的地址设置属性 复制链接链接已复制到粘贴板!
使用 auto-create-jms-queues、auto-delete- -jms-queues、jms-queues、auto-createauto-create-jms-topics 和 auto-delete-jms-topics 属性自动创建和自动删除主题的功能只在 JBoss EAP 7 中实施且不完全配置。这些属性已弃用,仅作为技术预览提供,且不被支持。
您必须将这些已弃用的属性的任何用法替换为以下替代属性。
弃用的属性不再在 JBoss EAP 7.4 中配置此功能,且不会起作用。不支持替换属性。它们只能作为按最佳努力迁移的方式。
| 弃用的属性 | 替换属性 |
|---|---|
| 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。
有关这些替换属性的更多信息,请参阅配置消息传递中的地址设置属性。
5.3.5. 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 所述。