6.4. 消息传递服务器配置变化


了解如何将配置和关联的消息传递数据迁移到 ActiveMQ Artemis,后者充当 Red Hat JBoss Enterprise Application Platform 8.0 中的 Jakarta 消息传递支持提供程序。

6.4.1. 迁移消息传递数据

回顾在 Red Hat JBoss Enterprise Application Platform 中迁移消息传递数据的方法。

要将消息传递数据从以前的 JBoss EAP 7.x 版本迁移到 JBoss EAP 8.0,您可以使用导出和导入方法迁移消息传递数据。此方法涉及从上一版本导出消息传递数据,并使用管理 CLI import-journal 操作将其导入到 JBoss EAP 8.0 中。请注意,这种方法仅适用于基于文件的消息传递系统。

与版本 7 一样,JBoss EAP 8.0 继续使用 ActiveMQ Artemis 作为 Jakarta 消息传递支持提供程序,这有助于使迁移过程平稳进行。

使用以下方法将上一发行版本中的消息传递数据导出到 XML 文件,然后使用 import-journal 操作导入该文件:

重要

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

要从 Red Hat JBoss Enterprise Application Platform 7.x 发行版本导出消息传递数据,请按照概述的步骤操作。

先决条件

  • JBoss EAP 7.x 已安装在您的系统上。
  • 您可以访问终端或命令行界面。
  • 您有浏览目录和执行命令所需的权限。

流程

  1. 打开一个终端,导航到 JBoss EAP 7.x 安装目录,并以 admin-only 模式启动服务器。

    $ 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

验证

  • 确保完成 命令时,日志中没有任何错误或警告消息。
  • 使用与您的操作系统兼容的工具,在生成的输出文件中验证 XML。
6.4.1.1.2. 导入 XML 格式的消息传递数据

从 JBoss EAP 8.0 导出消息传递数据后,您需要使用 import-journal 操作将 XML 文件导入到 JBoss EAP 8.0 或更高版本。

先决条件

  • 使用管理 CLI 迁移操作或 JBoss 服务器迁移工具完成 JBoss EAP 8.0 的迁移。
  • 以正常模式启动 JBoss EAP 8.0 服务器,无需任何连接的 Jakarta 消息传递客户端。

流程

要将 XML 文件导入到 JBoss EAP 8.0 或更高版本,请使用 import-journal 操作按照以下步骤操作:

重要

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

  1. 以正常模式启动 JBoss EAP 8.0 服务器 ,没有连接 Jakarta 消息传递客户端。

    重要

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

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

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

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

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

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

如果 import-journal 操作失败,您可以从导入消息传递数据失败中恢复。

先决条件

  • 熟悉 JBoss EAP 8.0 服务器及其管理 CLI 命令。
  • 了解消息传递日志文件夹的目录位置。
  • 目标服务器消息传递数据之前备份(如果可用)。

流程

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

6.4.1.2. 使用消息传递网桥迁移消息传递数据

Jakarta 消息传递网桥使用来自源 Jakarta Messaging 队列或主题的消息,并将它们发送到不同服务器上的目标 Jakarta 消息传递队列或主题。它启用了遵循 Jakarta Messaging 3.1 标准的消息传递服务器之间的消息桥接。使用 Java 命名和目录接口查找源和目标 Jakarta 消息传递资源,确保模块中捆绑了用于 Java 命名和目录接口查找的客户端类,并在 Jakarta 消息传递网桥配置中声明模块名称。

本节介绍了如何配置服务器并部署消息传递网桥,以便将消息传递数据从 JBoss EAP 7 移到 JBoss EAP 8.0。要做到这一点,请执行以下步骤:

6.4.1.2.1. 配置 JBoss EAP 8.0 服务器

要在 JBoss EAP 8.0 中配置 Jakarta 消息传递网桥,以便无缝迁移消息传递数据,包括模块依赖项和队列配置,请按照以下步骤操作。

先决条件

  • JBoss EAP 8.0 服务器已安装并运行。

流程

  1. 在 JBoss EAP 8.0 服务器的 messaging-activemq 子系统中,为默认服务器创建以下 jms-queue 配置。

    jms-queue add --queue-address=MigratedMessagesQueue --entries=[jms/queue/MigratedMessagesQueue java:jboss/exported/jms/queue/MigratedMessagesQueue]
    Copy to Clipboard Toggle word wrap
  2. 确保 messaging-activemq 子系统 默认服务器 包含 InVmConnectionFactory connection-factory 的配置,如下所示:

    <connection-factory name="InVmConnectionFactory" factory-type="XA_GENERIC" entries="java:/ConnectionFactory" connectors="in-vm"/>
    Copy to Clipboard Toggle word wrap

    如果没有包含该条目,请使用以下管理 CLI 命令创建一个:

    /subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(factory-type=XA_GENERIC, connectors=[in-vm], entries=[java:/ConnectionFactory])
    Copy to Clipboard Toggle word wrap
  3. 创建和部署 Jakarta 消息传递网桥,该网桥从 InQueue JMS 队列读取消息,并将它们传输到 JBoss EAP 7.x 服务器上配置的 MigratedMessagesQueue

    /subsystem=messaging-activemq/jms-bridge=myBridge:add(add-messageID-in-header=true,max-batch-time=100,max-batch-size=10,max-retries=-1,failure-retry-interval=1000,quality-of-service=AT_MOST_ONCE,module=org.hornetq,source-destination=jms/queue/InQueue,source-connection-factory=jms/RemoteConnectionFactory,source-context=[("java.naming.factory.initial"=>"org.wildfly.naming.client.WildFlyInitialContextFactory"),("java.naming.provider.url"=>"http-remoting://legacy-host:8080")],target-destination=jms/queue/MigratedMessagesQueue,target-connection-factory=java:/ConnectionFactory)
    Copy to Clipboard Toggle word wrap

    这会在 JBoss EAP 8.0 服务器的 messaging-activemq 子系统中创建以下 jms-bridge 配置。

    <jms-bridge name="myBridge" add-messageID-in-header="true" max-batch-time="100" max-batch-size="10" max-retries="-1" failure-retry-interval="1000" quality-of-service="AT_MOST_ONCE">
        <source destination="jms/queue/InQueue" connection-factory="jms/RemoteConnectionFactory">
            <source-context>
                <property name="java.naming.factory.initial" value="org.wildfly.naming.client.WildFlyInitialContextFactory"/>
                <property name="java.naming.provider.url" value="http-remoting://legacy-host:8080"/>
            </source-context>
        </source>
        <target destination="jms/queue/MigratedMessagesQueue" connection-factory="java:/ConnectionFactory"/>
    </jms-bridge>
    Copy to Clipboard Toggle word wrap
6.4.1.2.2. 迁移消息传递数据

要将消息传递数据从 Red Hat JBoss Enterprise Application Platform 8.0 迁移到 Red Hat JBoss Enterprise Application Platform 8.0,请按照以下步骤执行。

先决条件

  • JBoss EAP 8.0 服务器已安装并运行。

流程

  1. 验证您为以下配置提供的信息是否正确。

    • 任何队列和主题名称。
    • java.naming.provider.url 用于 Java 命名和目录接口查找。
  2. 确保您已将目标 Jakarta Messaging 目的地部署到 JBoss EAP 8.0 服务器。
  3. 启动 JBoss EAP 8.0 服务器,包括迁移过程中涉及的 JBoss EAP 7 服务器。

6.4.1.3. 备份消息传递文件夹数据

为确保数据完整性,建议在更改目标消息前备份目标消息文件夹(如果您的服务器已处理消息)。您可以在 EAP_HOME/standalone/data/activemq/ 中找到消息传递文件夹的默认位置,但可能会配置它。如果您不确定消息传递数据的位置,您可以使用以下管理 CLI 命令确定它。

流程

  1. 使用以下管理 CLI 命令确定消息传递数据的位置:

    /subsystem=messaging-activemq/server=default/path=journal-directory:resolve-path
    /subsystem=messaging-activemq/server=default/path=paging-directory:resolve-path
    /subsystem=messaging-activemq/server=default/path=bindings-directory:resolve-path
    /subsystem=messaging-activemq/server=default/path=large-messages-directory:resolve-path
    Copy to Clipboard Toggle word wrap
    注意

    在复制数据前,请确保停止服务器。

  2. 在确定其各自位置后,将每个消息传递文件夹复制到安全备份位置。

6.4.2. 配置 Jakarta Messaging 资源适配器

在 Red Hat JBoss Enterprise Application Platform 8.0 中更改了配置通用 Jakarta 消息传递资源适配器以用于第三方 Jakarta 消息传递提供程序的方法。如需更多信息,请参阅 JBoss EAP 7.4 配置消息传递指南中的 部署通用 Java 消息服务资源适配器

6.4.3. 消息传递配置更改

在 Red Hat JBoss Enterprise Application Platform 7.0 中,如果您在没有指定 check-for-live-server 属性的情况下配置了 replication-primary 策略,则其默认值被设置为 false。JBoss EAP 7.1 及更高版本中发生了这一变化。check-for-live-server 属性的默认值现在设为 true

以下是管理 CLI 命令的示例,该命令配置 replication-primary 策略,而不指定 check-for-live-server 属性。

/subsystem=messaging-activemq/server=default/ha-policy=replication-primary:add(cluster-name=my-cluster,group-name=group1)
Copy to Clipboard Toggle word wrap

使用管理 CLI 读取资源时,请注意 check-for-live-server 属性值设为 true

/subsystem=messaging-activemq/server=default/ha-policy=replication-primary:read-resource(recursive=true)
{
    "outcome" => "success",
    "result" => {
        "check-for-live-server" => true,
        "cluster-name" => "my-cluster",
        "group-name" => "group1",
        "initial-replication-sync-timeout" => 30000L
    },
    "response-headers" => {"process-state" => "reload-required"}
}
Copy to Clipboard Toggle word wrap

6.4.4. 嵌入式代理消息传递的 Galleon 层

在 JBoss EAP 7 中,嵌入式消息传递代理是默认安装的一部分。在 JBoss EAP 8 中,这个功能被添加到一个新的 Galleon 层中,称为 embedded-activemq

这个新层不是默认配置的一部分,因此希望依赖在 JBoss EAP 中嵌入代理的用户必须在其配置中明确包含该代理。

该层提供了一个带有嵌入式代理的 messaging-activemq 子系统,即使建议客户在 OpenShift 上使用专用 AMQ 集群。它还置备辅助资源,如 socket-bindings 和支持此用例所需的依赖项。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部