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"
.. 和
并确保createConnector
是true
。
<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中加入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 启动时的运行方法