4.4. 消息传递服务器配置更改


了解如何在 Red Hat JBoss Enterprise Application Platform 8.1 中将您的配置和相关消息传递数据迁移到 ActiveMQ Artemis,它充当 Jakarta 消息传递支持提供商。

4.4.1. 迁移消息传递数据

查看您可以在 Red Hat JBoss Enterprise Application Platform 中迁移消息传递数据的方法。

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

与版本 8 一样,JBoss EAP 8.1 继续使用 ActiveMQ Artemis 作为 Jakarta 消息传递支持提供程序,这有助于使迁移过程更顺畅。

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

重要

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

4.4.1.1.1. 从 JBoss EAP 7.x 版本导出消息传递数据

要从 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
  2. 打开一个新终端,前往 JBoss EAP 7.x 安装目录,再连接管理 CLI。

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

    /subsystem=messaging-activemq/server=default:export-journal()

验证

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

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

先决条件

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

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

流程

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

    重要

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

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

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

    /subsystem=messaging-activemq/server=default:import-journal(file=OUTPUT_DIRECTORY/OldMessagingData.xml)
    重要

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

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

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

先决条件

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

流程

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

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

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

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

4.4.1.2.1. 配置 JBoss EAP 8.1 服务器

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

先决条件

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

流程

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

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

    <connection-factory name="InVmConnectionFactory" factory-type="XA_GENERIC" entries="java:/ConnectionFactory" connectors="in-vm"/>

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

    /subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(factory-type=XA_GENERIC, connectors=[in-vm], entries=[java:/ConnectionFactory])
  3. 创建和部署 Jakarta Messaging 网桥,从 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)

    这会在 JBoss EAP 8.1 服务器的 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>
4.4.1.2.2. 迁移消息传递数据

要将消息传递数据从 Red Hat JBoss Enterprise Application Platform 8.1 迁移到 Red Hat JBoss Enterprise Application Platform 8.1,请按照概述的步骤操作。

先决条件

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

流程

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

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

4.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
    注意

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

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

4.4.2. 配置 Jakarta Messaging 资源适配器

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

4.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)

当您使用管理 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"}
}

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

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

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

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部