4.9.2. 迁移消息传递数据
您可以使用以下方法之一将消息传递数据从上一版本迁移到 JBoss EAP 的当前版本:
-
对于基于文件的消息传递系统,您可以使用导出和导入方法将消息传递数据从 JBoss EAP 6.4 和之前的 JBoss EAP 7.x 版本迁移到 JBoss EAP 7.3。使用此方法,您可以导出来自上一发行版本的消息传递数据,并使用管理 CLI
import-journal
操作导入数据。请注意,您只能在基于文件的消息传递系统中使用此方法。 - 您可以通过配置 JMS 网桥,将消息传递数据从 JBoss EAP 6.4 迁移到 JBoss EAP 7.3。您可以将这种方法用于基于文件和 JDBC 消息传递系统。
由于 JMS 支持提供程序从 HornetQ 更改为 ActiveMQ Artemis,消息传递数据的格式和位置在 JBoss EAP 7.0 及更高版本中有所变化。如需了解有关消息传递数据文件夹名称和 6.4 和 7.x 版本之间的位置的更改的详细信息,请参阅映射消息传递文件夹名称。
4.9.2.1. 使用导出和导入来迁移消息传递数据 复制链接链接已复制到粘贴板!
使用此方法,您可以将之前版本的消息传递数据导出到 XML 文件,然后使用 import-journal
操作导入该文件。
将消息传递数据导出到 XML 文件。
- 导入 XML 格式的消息传递数据。
您不能使用导出和导入方法在使用基于 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
$ java -jar -mp MODULE_PATH org.hornetq.exporter MESSAGING_BINDINGS_DIRECTORY MESSAGING_JOURNAL_DIRECTORY MESSAGING_PAGING_DIRECTORY MESSAGING_LARGE_MESSAGES_DIRECTORY > OUTPUT_DATA.xml
创建自定义模块,以确保正确版本的 HornetQ JAR(包括安装有补丁或升级的任何 JAR)已加载并提供给 exporter
实用程序。使用您首选的编辑器,在 EAP6_HOME/modules/org/hornetq/exporter/main/
目录中创建一个新的 module.xml
文件并复制以下内容:
自定义模块是在 modules/
目录中创建的,而不是 module /system/layers/base/
目录。
按照以下步骤导出数据。
- 停止 JBoss EAP 6.4 服务器。
- 如上所述,创建自定义模块。
运行以下命令以导出数据:
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
$ 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 Copied! Toggle word wrap Toggle overflow - 确保完成 命令时,日志中没有任何错误或警告消息。
- 使用您的操作系统可用的工具来验证所生成输出文件中的 XML。
从 JBoss EAP 7.x 导出消息传递数据
按照以下步骤导出来自 JBoss EAP 7.x 的消息传递数据。
打开一个终端,前往 JBoss EAP 7.x 安装目录,再以
管理员模式
启动服务器。EAP_HOME/bin/standalone.sh -c standalone-full.xml --start-mode=admin-only
$ EAP_HOME/bin/standalone.sh -c standalone-full.xml --start-mode=admin-only
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开一个新终端,前往 JBoss EAP 7.x 安装目录,再连接管理 CLI。
EAP_HOME/bin/jboss-cli.sh --connect
$ EAP_HOME/bin/jboss-cli.sh --connect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令导出消息传递日志数据:
/subsystem=messaging-activemq/server=default:export-journal()
/subsystem=messaging-activemq/server=default:export-journal()
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 确保完成 命令时,日志中没有任何错误或警告消息。
- 使用您的操作系统可用的工具来验证所生成输出文件中的 XML。
导入 XML 格式的消息传递数据
然后,您将 XML 文件导入到 JBoss EAP 7.0 或更高版本,按照如下所示使用 import-journal
操作:
如果您的目标服务器已执行一些消息传递任务,请务必在开始 导入操作
前备份您的消息传递文件夹,以防止导入失败时出现数据丢失。如需更多信息,请参阅备份消息传递文件夹数据。
- 如果要将 JBoss EAP 6.4 服务器迁移至 JBoss EAP 7.3,请确保已完成服务器配置迁移,然后再使用管理 CLI 迁移操作或运行 JBoss 服务器迁移工具。有关如何配置和运行工具的详情,请参考 使用 JBoss 服务器迁移工具。
以正常模式启动 JBoss EAP 7.x 服务器,但不连接 JMS 客户端。
重要务必要在未连接 JMS 客户端的情况下启动服务器。这是因为
import-journal
操作的行为类似于 JMS 制作者。操作过程中,消息会立即可用。如果此操作在导入期间失败,并且 JMS 客户端已连接,则无法恢复,因为 JMS 客户端可能已使用了一些消息。打开一个新终端,前往 JBoss EAP 7.x 安装目录,再连接管理 CLI。
EAP_HOME/bin/jboss-cli.sh --connect
$ EAP_HOME/bin/jboss-cli.sh --connect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令导入消息传递数据:
/subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)
/subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要不要多次运行此命令,因为这样做会导致重复的消息!
警告如果您使用 JBoss EAP 7.0,您必须对 JBoss EAP 安装应用红帽 JBoss 企业应用平台 7.0 更新 05 或较新的累积修补程序,以避免读取大量消息时已知问题。如需更多信息,请参阅 JBEAP-4407 - 在读取导入日志中的大型消息时,使用 IndexOutOfBoundsException 崩溃。
此问题不会影响 JBoss EAP 7.1 及更高版本。
从导入的消息传递数据失败中恢复
如果 import-journal
操作失败,您可以按照以下步骤尝试恢复。
- 关闭 JBoss EAP 7.x 服务器。
- 删除所有消息传递日志文件夹。请参阅管理 CLI 命令备份消息传递文件夹数据,以确定消息传递日志文件夹的正确目录位置。
- 如果您在导入前备份了目标服务器消息传递数据,请将消息传递文件夹从备份位置复制到在上一步中确定的消息传递日志目录。
- 重复上述步骤,以导入 XML 格式的消息传递数据。