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

Posted

技术标签:

【中文标题】Spring Boot - 在启动时启动 ActiveMQ Web 控制台【英文标题】:Spring Boot - start ActiveMQ Web Console on startup 【发布时间】:2017-10-21 20:13:50 【问题描述】:

我有一个自动启动 ActiveMQ 代理 (vm://localhost) 的 Spring Boot 应用程序:它工作正常,我可以成功发送和接收消息。

我希望 Spring Boot 也启动 ActiveMQ Web 控制台,例如http://localhost:8161/admin(很像 H2 数据库控制台)。

问题:如何让 Spring Boot 应用启动 ActiveMQ Web 控制台?

奖励积分:仅适用于特定 Spring @profile?

提前致谢

注意:我已经审查了How to enable web console on ActiveMq embedded broker,但这需要使用我不想/不能使用的hawtio。

【问题讨论】:

How to enable web console on ActiveMq embedded broker的可能重复 r.e.可能的重复:接受的答案是使用 hawt.io - 我不想使用这个。 如果你不能使用 hawtio,你必须构建并嵌入这个工件 github.com/apache/activemq/tree/master/activemq-web-console 作为一个 jar 并像这里所做的那样启动一个服务器 github.com/apache/activemq/blob/master/activemq-web-console/src/… 【参考方案1】:

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

这里有一些步骤。

在 activemq.xml 中启用 ActiveMQ 以供 JMX 使用。也就是说 - 在代理标签中启用它:<broker useJmx="true" .. 和

并确保createConnectortrue

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

从 Maven 下载 .war。最好使用与代理相同的版本。

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 

管理控制台将托管在 localhost 的 8085 端口。这只是一个开始。您可能想要添加故障转移、安全等。YMMV

【讨论】:

是否需要在activemq.xml中加入?如果是,我们如何添加它。如果我们使用战争 对我来说,这个解决方案不起作用:在 artemis 服务器中,Web 控制台日志说 No broker is found at any of the 1 configured urls 我已经用 configuration.setJMXManagementEnabled(true); 激活了 jmx,但是这个配置对象没有提供任何设置这个 @987654331 的方法@不使用 xml 文件我怎么能做到这一点? 此答案适用于 ActiveMQ Classic 而不是 Artemis

以上是关于Spring Boot - 在启动时启动 ActiveMQ Web 控制台的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.0:Spring Boot 如何解决项目启动时初始化资源

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

企业级spring-boot案例-Spring Boot 启动时的运行方法

企业级spring-boot案例-Spring Boot 启动时的运行方法

企业级spring-boot案例-Spring Boot 启动时的运行方法

企业级spring-boot案例-Spring Boot 启动时的运行方法