Spring 启动 Artemis 服务器连接 Web 控制台
Spring Boot Artemis Server connect Web Console
如何将 Web 控制台连接到 Spring 引导嵌入式 Artemis 服务器?
我主要关注这个。
- tomcat 9.0.58
activemq-web-console-5.16.3.war
在 webapps
文件夹中
- 将
jakarta.servlet.jsp.jstl-1.2.6.jar
& jakarta.servlet.jsp.jstl-api-1.2.7.jar
添加到webapps/activemq-web-console-5.16.3/WEB-INF/lib
,否则控制台将无法启动
- 在
catalina.bat
中添加了行 set "JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.type=properties -Dwebconsole.jms.url=tcp://localhost:61616 -Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
但现在当我访问网络控制台时 - 错误:
- 我得到
Exception occurred while processing this request, check the log for more information!
- 并且日志显示:
IllegalStateException: No broker is found at any of the 1 configured urls
我的 Artemis 服务器 运行 在一个极简的 Spring 引导应用程序中:
- 从 VMOptions 开始:
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
- spring 引导父级:
spring-boot-starter-parent:2.6.2
- 活跃的 mq:
artemis-jms-server:2.19.0
spring-boot-starter-web:2.6.2
- 和以下配置class:
@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 控制台指向它。
如何将 Web 控制台连接到 Spring 引导嵌入式 Artemis 服务器?
我主要关注这个
- tomcat 9.0.58
activemq-web-console-5.16.3.war
在webapps
文件夹中- 将
jakarta.servlet.jsp.jstl-1.2.6.jar
&jakarta.servlet.jsp.jstl-api-1.2.7.jar
添加到webapps/activemq-web-console-5.16.3/WEB-INF/lib
,否则控制台将无法启动 - 在
catalina.bat
中添加了行
set "JAVA_OPTS=%JAVA_OPTS% -Dwebconsole.type=properties -Dwebconsole.jms.url=tcp://localhost:61616 -Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
但现在当我访问网络控制台时 - 错误:
- 我得到
Exception occurred while processing this request, check the log for more information!
- 并且日志显示:
IllegalStateException: No broker is found at any of the 1 configured urls
我的 Artemis 服务器 运行 在一个极简的 Spring 引导应用程序中:
- 从 VMOptions 开始:
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
- spring 引导父级:
spring-boot-starter-parent:2.6.2
- 活跃的 mq:
artemis-jms-server:2.19.0
spring-boot-starter-web:2.6.2
- 和以下配置class:
@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-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 控制台指向它。