Spring 启动 Artemis 服务器连接 Web 控制台

Spring Boot Artemis Server connect Web Console

如何将 Web 控制台连接到 Spring 引导嵌入式 Artemis 服务器?

我主要关注这个

但现在当我访问网络控制台时 - 错误:

我的 Artemis 服务器 运行 在一个极简的 Spring 引导应用程序中:

  @Configuration
  public class ArtemisConfig implements ArtemisConfigurationCustomizer {

    @Autowired
    private ArtemisProperties artemisProperties;

    @Override
    public void customize(org.apache.activemq.artemis.core.config.Configuration configuration) {
      try{

        configuration.setJMXManagementEnabled(true);
        configuration.setSecurityEnabled(false);
        configuration.addAcceptorConfiguration("netty", "tcp://localhost:" + artemisProperties.getPort());

      } catch (Exception e) {
        throw new RuntimeException("queue did not start");
      }
    }
  }

您引用的 的唯一真正问题是它是为 ActiveMQ“Classic”而不是 ActiveMQ Artemis 编写的。 ActiveMQ Artemis 不使用 activemq-web-console-5.16.3.war。它使用基于 Hawtio 2 的 Web 控制台,该控制台分为 3 个不同的 war 文件:

将它们部署到您的嵌入式 servlet 容器(例如 Tomcat、Jetty 等)。我认为您不需要设置任何系统属性,但在发布过程中我们实际上删除了任何 SLF4J 和 Log4j jar 文件,因此如果您的环境尚未提供它们,您可能需要将它们添加回去。我们删除这些 jar 是因为我们实际上在独立代理的主 lib 目录中运送 SLF4J,并且我们实际上不需要 Log4j(因为 ActiveMQ Artemis 使用 JBoss 日志记录)所以删除它更安全(特别是在所有最近的 Log4j CVE 之后)。有关详细信息,请参阅 ARTEMIS-3612

浏览器中的 Web 控制台应用程序 运行 通过 Jolokia which is an HTTP-JMX bridge. Jolokia is part of the Hawtio 2 infrastructure and is included in the aforementioned war files. If the war files are being hosted in the same JVM as your Spring Boot application with ActiveMQ Artemis embedded then you should just need to point the web console app to the same server & port you're using for the console itself. If the web console is hosted separately from the Spring Boot app then you should install Jolokia 与代理通信,然后将 Web 控制台指向它。