运行 不同的 ActiveMQ Artemis 版本具有单独的 JDK

Run different ActiveMQ Artemis versions with separate JDK's

快速提问; 运行 不同的 Artemis ActiveMQ 版本与不同的 JDK 版本是否可能且合理? 目前我的虚拟机上有两个独立的 Artemis 服务 运行 不同的 Artemis 版本(2.4.0 不酷,我知道 :/ 和 2.16.0)。 现在我想将 2.16.0 升级到 2.21.0,这意味着我还需要一个新的 JDK 版本。问题是我仍然必须向客户提供 2.4.0 版本。 我可以 运行 2.21.0 与 JDK 17 和 2.4.0 仍然与 JDK 8 吗?

Java-Version 似乎在 artemis-service.xml 中被引用为 %JAVA_HOME%,这是一个 windows 环境变量并输出 JDK 17 或 JDK 8。 我可以将此变量切换到本地环境,类似于 artemis-service.xml 中的 ARTEMIS_INSTANCE 还是这不是预期用途?

所以新的 artemis-service.xml 看起来像这样:

...
<env name="ARTEMIS_INSTANCE_ETC_URI" value="file:/C:/ApacheMQ/BROKER/etc/"/>
<env name="ARTEMIS_DATA_DIR" value="C:\ApacheMQ\BROKER\data"/>
<env name="JAVA_V17" value="C:\PATH_TO_JDK_17"/>

<logpath>C:\ApacheMQ\BROKER\log</logpath>
<logmode>roll</logmode>

<executable>%JAVA_V17%\bin\java.exe</executable>
...

显然 JDK 版本之一无法正确安装,而只是驻留在一个文件夹中。

是的,我知道这更像是一个肮脏的解决方法,但原则上它是一个选择吗?

您的解决方案可行,另一种方法是使用完整路径来定义可执行元素,即

<executable>C:\PATH_TO_JDK_17\bin\java.exe</executable>