4.9.2. 迁移消息传递数据


您可以使用以下方法之一将消息传递数据从上一版本迁移到 JBoss EAP 的当前版本:

由于 JMS 支持提供程序从 HornetQ 更改为 ActiveMQ Artemis,消息传递数据的格式和位置在 JBoss EAP 7.0 及更高版本中有所变化。如需了解有关消息传递数据文件夹名称和 6.4 和 7.x 版本之间的位置的更改的详细信息,请参阅映射消息传递文件夹名称

4.9.2.1. 使用导出和导入来迁移消息传递数据

使用此方法,您可以将之前版本的消息传递数据导出到 XML 文件,然后使用 import-journal 操作导入该文件。

重要

您不能使用导出和导入方法在使用基于 JDBC 的日志进行存储的系统之间移动消息传递数据。

从 JBoss EAP 6.4 导出消息传递数据

由于 JMS 支持提供程序从 HornetQ 更改为 ActiveMQ Artemis,消息传递数据的格式和位置在 JBoss EAP 7.0 及更高版本中有所变化。

要从 JBoss EAP 6.4 导出消息传递数据,您必须使用 HornetQ 导出器 实用程序。HornetQ 导出器 实用程序 生成消息传递数据并将其导出从 JBoss EAP 6.4 到 XML 文件。此命令要求您指定 JBoss EAP 6.4 随附的所需 HornetQ JAR 的路径,将路径传递到 messagingbindings/messagejournal/messagepaging/messaginglargemessages/ 文件夹作为参数,并指定输出文件,在其中编写导出的 XML 数据。

以下是 HornetQ 导出程序所需的 语法

$ java -jar -mp MODULE_PATH org.hornetq.exporter MESSAGING_BINDINGS_DIRECTORY MESSAGING_JOURNAL_DIRECTORY MESSAGING_PAGING_DIRECTORY MESSAGING_LARGE_MESSAGES_DIRECTORY > OUTPUT_DATA.xml
Copy to Clipboard Toggle word wrap

创建自定义模块,以确保正确版本的 HornetQ JAR(包括安装有补丁或升级的任何 JAR)已加载并提供给 exporter 实用程序。使用您首选的编辑器,在 EAP6_HOME/modules/org/hornetq/exporter/main/ 目录中创建一个新的 module.xml 文件并复制以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.hornetq.exporter">
    <main-class name="org.hornetq.jms.persistence.impl.journal.XmlDataExporter"/>
    <properties>
        <property name="jboss.api" value="deprecated"/>
    </properties>
    <dependencies>
        <module name="org.hornetq"/>
    </dependencies>
</module>
Copy to Clipboard Toggle word wrap
注意

自定义模块是在 modules/ 目录中创建的,而不是 module /system/layers/base/ 目录。

按照以下步骤导出数据。

  1. 停止 JBoss EAP 6.4 服务器。
  2. 如上所述,创建自定义模块。
  3. 运行以下命令以导出数据:

    $ java -jar jboss-modules.jar -mp modules/ org.hornetq.exporter standalone/data/messagingbindings/ standalone/data/messagingjournal/ standalone/data/messagingpaging standalone/data/messaginglargemessages/ > OUTPUT_DIRECTORY/OldMessagingData.xml
    Copy to Clipboard Toggle word wrap
  4. 确保完成 命令时,日志中没有任何错误或警告消息。
  5. 使用您的操作系统可用的工具来验证所生成输出文件中的 XML。
从 JBoss EAP 7.x 导出消息传递数据

按照以下步骤导出来自 JBoss EAP 7.x 的消息传递数据。

  1. 打开一个终端,前往 JBoss EAP 7.x 安装目录,再以 管理员模式 启动服务器。

    $ EAP_HOME/bin/standalone.sh -c standalone-full.xml --start-mode=admin-only
    Copy to Clipboard Toggle word wrap
  2. 打开一个新终端,前往 JBoss EAP 7.x 安装目录,再连接管理 CLI。

    $ EAP_HOME/bin/jboss-cli.sh --connect
    Copy to Clipboard Toggle word wrap
  3. 使用以下管理 CLI 命令导出消息传递日志数据:

    /subsystem=messaging-activemq/server=default:export-journal()
    Copy to Clipboard Toggle word wrap
  4. 确保完成 命令时,日志中没有任何错误或警告消息。
  5. 使用您的操作系统可用的工具来验证所生成输出文件中的 XML。
导入 XML 格式的消息传递数据

然后,您将 XML 文件导入到 JBoss EAP 7.0 或更高版本,按照如下所示使用 import-journal 操作:

重要

如果您的目标服务器已执行一些消息传递任务,请务必在开始 导入操作 前备份您的消息传递文件夹,以防止导入失败时出现数据丢失。如需更多信息,请参阅备份消息传递文件夹数据

  1. 如果要将 JBoss EAP 6.4 服务器迁移至 JBoss EAP 7.3,请确保已完成服务器配置迁移,然后再使用管理 CLI 迁移操作或运行 JBoss 服务器迁移工具。有关如何配置和运行工具的详情,请参考 使用 JBoss 服务器迁移工具
  2. 以正常模式启动 JBoss EAP 7.x 服务器,但不连接 JMS 客户端。

    重要

    务必要在未连接 JMS 客户端的情况下启动服务器。这是因为 import-journal 操作的行为类似于 JMS 制作者。操作过程中,消息会立即可用。如果此操作在导入期间失败,并且 JMS 客户端已连接,则无法恢复,因为 JMS 客户端可能已使用了一些消息。

  3. 打开一个新终端,前往 JBoss EAP 7.x 安装目录,再连接管理 CLI。

    $ EAP_HOME/bin/jboss-cli.sh --connect
    Copy to Clipboard Toggle word wrap
  4. 使用以下管理 CLI 命令导入消息传递数据:

    /subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)
    Copy to Clipboard Toggle word wrap
    重要

    不要多次运行此命令,因为这样做会导致重复的消息!

    警告

    如果您使用 JBoss EAP 7.0,您必须对 JBoss EAP 安装应用红帽 JBoss 企业应用平台 7.0 更新 05 或较新的累积修补程序,以避免读取大量消息时已知问题。如需更多信息,请参阅 JBEAP-4407 - 在读取导入日志中的大型消息时,使用 IndexOutOfBoundsException 崩溃

    此问题不会影响 JBoss EAP 7.1 及更高版本。

从导入的消息传递数据失败中恢复

如果 import-journal 操作失败,您可以按照以下步骤尝试恢复。

  1. 关闭 JBoss EAP 7.x 服务器。
  2. 删除所有消息传递日志文件夹。请参阅管理 CLI 命令备份消息传递文件夹数据,以确定消息传递日志文件夹的正确目录位置。
  3. 如果您在导入前备份了目标服务器消息传递数据,请将消息传递文件夹从备份位置复制到在上一步中确定的消息传递日志目录。
  4. 重复上述步骤,以导入 XML 格式的消息传递数据
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat