Apache ActiveMQ "Classic"(及之前版本)可通过执行命令 ./bin/activemq run 直接运行。ActiveMQ Artemis broker 遵循不同的模式,其中项目分发作为 broker 的 "home",并创建了一个或多个 broker "实例",这些实例引用 "home" 以获取资源(例如 jar 文件),这些资源可以在 broker 实例之间安全共享。因此,必须在运行 broker 之前创建其实例。乍一看,这似乎是额外的开销,但在例如更新到新 Artemis 版本时,它会变得非常实用。

要创建 Artemis broker 实例,请导航到 Artemis home 文件夹并运行:./bin/artemis create /path/to/myBrokerInstance 命令行。

由于这种分离,在大多数情况下,升级 Artemis 非常容易。

建议选择一个与下载 Apache Artemis 位置不同的文件夹。这种分离允许您例如使用相同的 Artemis "home" 运行多个 broker 实例。它还简化了更新到更新版本的 Artemis。

1. 通用升级流程

升级可能需要在 版本 中注意的一些特定步骤,但一般的过程如下

  1. 导航到正在升级的 broker 实例的 etc 文件夹

  2. 打开 artemis.profileartemis-utility.profile(在 Windows 上为 artemis.profile.cmdartemis-utility.profile.cmd)。它包含与升级相关的属性

    ARTEMIS_HOME='/path/to/apache-artemis-version'

如果在 Windows 上将 Artemis 作为服务运行,则必须执行以下额外步骤

  1. 导航到正在升级的 broker 实例的 bin 文件夹

  2. 打开 artemis-service.xml。它包含与升级相关的属性

    <env name="ARTEMIS_HOME" value="/path/to/apache-artemis-version"/>

ARTEMIS_HOME 属性用于将实例链接到 home。在大多数情况下,可以通过将此属性的值更改为新的 broker home 的位置来将实例升级到更新版本。请参阅上述 版本 文档以了解其他升级步骤(如果需要)。

也可以像下一节中看到的那样自动执行许多这些更新步骤。

2. 升级工具

可以使用新 broker 下载的升级助手工具来刷新来自先前版本中现有 broker 实例的各种配置文件和脚本,从而自动化大部分工作以将实例升级到使用新版本。

在运行命令之前,应备份现有的 broker 实例。
cd $NEW_ARTEMIS_DOWNLOAD/bin/
./artemis upgrade PATH_TO_UPGRADING_INSTANCE

broker 实例脚本 bin/artemis 以及配置文件 etc/artemis.profileetc/artemis-utility.profile(在 Windows 上为 artemis.cmdartemis.cmd.profileartemis-utility.cmd.profile)将更新到新版本,并将其 ARTEMIS_HOME 设置为引用新的 broker 版本 home 路径。该工具还将在需要时创建新的 <instance>/etc/log4j2.properties<instance>/etc/log4j2-default.properties 配置文件(例如,如果您是从 2.27.0 之前的版本迁移而来),并删除旧的 <instance>/etc/logging.properties 文件(如果存在)。

broker.xml 文件和数据保持原样。

对旧配置文件和脚本的大多数现有自定义将在刷新文件过程中丢失。因此,您应该将旧的配置文件与刷新的配置文件进行比较,然后根据需要移植您可能做出的任何缺少的自定义。升级命令本身会将它更改的旧文件复制到实例目录中的 old-config-bkp. 文件夹中。

同样,如果您自定义了旧的 logging.properties 文件,您可能需要为新的 log4j2.propertieslog4j2-utility.properties 文件准备类似的更改。