使用 Hawtio 访问嵌入式 ActiveMQ Artemis

Accessing Embedded ActiveMQ Artemis with Hawtio

我有 Spring 引导应用程序,其中包含嵌入式 ActiveMQ Artemis 和 Camel。这使用以下 ActiveMQ 依赖项:

    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>artemis-server</artifactId>
        <version>2.18.0</version>
    </dependency>

我也使用 Jolokia 作为依赖项。当使用远程 Hawtio 实例连接到应用程序时,Camel 插件被启用,我还可以通过 JMX 插件看到 Camel 和 ActiveMQ Artemis。但是,ActiveMQ 插件未启用(尽管它包含在默认的 Hawtio 安装中)。

如何让 Hawtio 识别 ActiveMQ,从而启用 Hawtio ActiveMQ 插件?

Hawtio 附带的 ActiveMQ 插件适用于 ActiveMQ“经典”代理,而不是 ActiveMQ Artemis。因此,它不会检测 ActiveMQ Artemis 的嵌入式实例。

ActiveMQ Artemis本身有一个Hawtio plugin由三部分组成:

  1. artemis-console(重命名为console.war
  2. artemis-plugin(重命名为artemis-plugin.war
  3. activemq-branding(重命名为activemq-branding.war

您可以下载这些 war 文件并将它们部署到您的 Web 应用程序服务器中(假设您有一个)。我已经在 Wildfly 24 上完成了这项工作,一旦我放松了远程 ActiveMQ Artemis 实例的安全性(允许“来宾”用户并在 jolokia-access.xml 中禁用 CORS),它就可以正常工作。当然,在生产中你会想要解决安全问题,但这应该会让你朝着正确的方向前进。

根据 Justin Bertram 的建议,我执行了以下操作:

  1. 下载Wildfly

  2. 下载ActiveMQ Artemis

  3. 将它们解压并将Artemis的web目录(即/apache-artemis-2.18.0/web)复制到Wildfly的部署目录(即/wildfly-24.0.1.Final/standalone/deployments)

  4. 启动 Wildfly 并连接到远程 ActiveMQ Artemis Broker 的 Jolokia 端点。