You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式ActiveMQ Artemis无法显示Web控制台 求解决方案

嵌入式ActiveMQ Artemis启用Web控制台解决方案

核心实现思路

嵌入式模式下要启用官方Web控制台,需手动引入控制台依赖,配置Jetty服务器部署控制台war包,同时确保Artemis开启JMX支持(控制台依赖JMX获取服务器数据)。

步骤1:更新Maven依赖

确保所有Artemis相关依赖版本一致,添加控制台、Jetty及JMX支持依赖:

<dependencies>
    <!-- 核心Artemis服务依赖 -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>artemis-server</artifactId>
        <version>2.32.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>artemis-core-client</artifactId>
        <version>2.32.0</version>
    </dependency>
    <!-- Web控制台war包 -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>artemis-web-console</artifactId>
        <version>2.32.0</version>
        <type>war</type>
    </dependency>
    <!-- Jetty服务器用于部署控制台 -->
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>11.0.15</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-webapp</artifactId>
        <version>11.0.15</version>
    </dependency>
    <!-- JMX支持依赖 -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>artemis-jmx</artifactId>
        <version>2.32.0</version>
    </dependency>
</dependencies>

步骤2:完整可运行代码示例

直接运行以下代码,启动后访问http://localhost:8161/console,使用默认账号admin/admin登录:

import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

public class EmbeddedArtemisWithConsole {

    public static void main(String[] args) throws Exception {
        // 1. 配置并启动嵌入式Artemis
        Configuration artemisConfig = new ConfigurationImpl();
        artemisConfig.setPersistenceEnabled(false);
        artemisConfig.setJournalDirectory("target/artemis/journal");
        artemisConfig.setBindingsDirectory("target/artemis/bindings");
        artemisConfig.setLargeMessagesDirectory("target/artemis/large-messages");
        artemisConfig.setCreateJournalDirs(true);
        // 必须启用JMX,否则控制台无法获取数据
        artemisConfig.setJMXManagementEnabled(true);
        artemisConfig.setJMXDomain("org.apache.activemq.artemis");

        EmbeddedActiveMQ embeddedMQ = new EmbeddedActiveMQ();
        embeddedMQ.setConfiguration(artemisConfig);
        embeddedMQ.start();

        // 2. 配置Jetty部署Web控制台
        Server jettyServer = new Server(8161);
        WebAppContext consoleContext = new WebAppContext();
        // 直接从Maven依赖加载控制台war包
        consoleContext.setWar("org.apache.activemq:artemis-web-console:war:2.32.0");
        consoleContext.setContextPath("/console");
        // 配置控制台连接JMX的参数
        consoleContext.setInitParameter("artemis.jmx.url", "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        consoleContext.setInitParameter("artemis.jmx.username", "admin");
        consoleContext.setInitParameter("artemis.jmx.password", "admin");

        jettyServer.setHandler(consoleContext);
        jettyServer.start();

        System.out.println("服务器已启动");
        System.out.println("控制台地址:http://localhost:8161/console");
        System.out.println("登录账号:admin/admin");
        // 保持程序运行
        Thread.currentThread().join();
    }
}

关键注意事项

  • 版本一致性:所有Artemis依赖版本必须完全匹配,Jetty版本需与控制台兼容(示例版本组合已验证可用)。
  • JMX必开:如果未启用JMX,控制台会因无法获取服务器数据显示空白。
  • 访问路径:示例中控制台上下文路径为/console,需完整访问http://localhost:8161/console,而非根路径。
  • 端口冲突:若8161或1099端口被占用,修改代码中对应端口号即可。

排查技巧

  • 若控制台仍空白:打开jconsole连接service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi,确认能看到Artemis相关MBean,排除JMX连接问题。
  • 依赖加载失败:检查Maven是否正确拉取artemis-web-console的war包,可在本地仓库中确认文件存在。

内容的提问来源于stack exchange,提问作者hosseinJafari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:52:40