Spring Boot - 在启动时启动ActiveMQ Web控制台

6
我有一个Spring Boot应用程序,它会自动启动一个ActiveMQ代理(vm://localhost),它可以成功地发送和接收消息。
我希望Spring Boot也能够启动ActiveMQ Web控制台,例如http://localhost:8161/admin(就像它可以使用H2数据库控制台一样)。
问题:如何使Spring Boot应用程序启动ActiveMQ Web控制台?
额外加分项:仅适用于特定的Spring @profile吗?
提前感谢。
注意:我已经查看了如何在ActiveMq嵌入式代理上启用Web控制台,但这需要使用hawtio,而我不想/无法使用。

可能是重复的问题,参考 如何在ActiveMq嵌入式代理上启用Web控制台? - pvpkiran
关于可能的重复问题:接受的答案是使用hawt.io - 我不想使用它。 - Lawrence Tierney
如果您无法使用hawtio,则必须构建并嵌入此工件https://github.com/apache/activemq/tree/master/activemq-web-console作为jar,并像这里https://github.com/apache/activemq/blob/master/activemq-web-console/src/test/java/org/apache/activemq/web/tool/Main.java中所做的那样启动服务器。 - Hassen Bennour
1个回答

4

Web控制台是一个Web应用程序,可以在任何servlet容器(如Tomcat)中下载和启动。

以下是一些步骤。

在activemq.xml中启用ActiveMQ以供JMX使用。也就是说,在broker标记中启用它:<broker useJmx="true" ..并且

确保createConnectortrue

<managementContext>
        <managementContext createConnector="true"/>
</managementContext>

从Maven下载.war文件。最好使用与broker相同的版本。 http://repo1.maven.org/maven2/org/apache/activemq/activemq-web-console/5.14.5/ 然后设置以下JVM属性(JAVA_OPTS)。请注意,如果您更改了URL和端口,则可能会有所不同。
-Dwebconsole.type=properties 
-Dwebconsole.jms.url=tcp://localhost:61616 
-Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi

如果您没有Tomcat(或其他Servlet容器),并且更喜欢使用“java -jar...”来运行Spring Boot应用程序,您可以使用Web控制台执行相同操作。以下是使用此应用程序的示例:https://github.com/jsimone/webapp-runner。因为jstl jar没有捆绑在webapp-runner中,所以需要手动添加。
java -Dwebconsole.type=properties -Dwebconsole.jms.url=tcp://localhost:61616 -Dwebconsole.jmx.url=service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi -cp jstl-1.2.jar:webapp-runner.jar webapp.runner.launch --port 8085 activemq-web-console-5.14.5.war 

管理员控制台将在本地主机的8085端口上托管。这只是一个入门级别的设置。您可能希望添加故障转移、安全等功能。具体情况因人而异。


我们需要在activemq.xml中添加<import resource="${activemq.base}/conf/jetty.xml" />吗?如果是,我们该如何添加它?如果我们正在使用war文件... - Rohit Deshmukh
对我来说,这个解决方案不起作用: Web控制台日志显示“在任何一个配置的URL中都找不到代理人” 在Artemis服务器中,我已经使用configuration.setJMXManagementEnabled(true);激活了JMX, 但是这个配置对象没有提供任何设置<managementContext createConnector="true"/>的方法, 我该如何在不使用XML文件的情况下完成这个操作? - aminator
这个答案是针对ActiveMQ Classic而不是Artemis的。 - Petter Nordlander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接