Apache Activemq是一個高性能的開源消息隊列。在啓動它的時候,會自動啓動一個自帶的Web控制檯,通過控制檯可以查看當前Activemq服務器的情況,包括隊列、主題、連接、訂閱者等。這個控制檯是通過嵌入式的Jetty容器啓動的。
不過有時候我們可能需要獨立部署Web控制檯,比如在Tomcat中通過插件形式啓動Activemq,此時無法通過嵌入Jetty容器的方式啓動Web控制檯(因爲Tomcat和Jetty不兼容)。此時可以按照如下方式獨立部署Web控制檯。
抽取控制檯代碼
首先從官網下載Activemq的源代碼,我下載的是5.15.5版本。之後從中拷貝出activemq-web-console子模塊,作爲一個獨立項目。
從idea啓動項目
可以通過intellij idea從activemq-web-console目錄新建項目,注意選擇maven類型項目。之後等待maven自動下載所需依賴完畢。打開pom.xml,註釋掉下面的配置
<!-- <plugin>-->
<!-- <groupId>${jetty.maven.groupid}</groupId>-->
<!-- <artifactId>jetty-maven-plugin</artifactId>-->
<!-- <version>${jetty-version}</version>-->
<!-- <configuration>-->
<!-- <connectors>-->
<!-- <connector implementation="org.eclipse.jetty.server.ServerConnector">-->
<!-- <port>${jetty.port}</port>-->
<!-- <maxIdleTime>60000</maxIdleTime>-->
<!-- </connector>-->
<!-- </connectors>-->
<!-- <webAppConfig>-->
<!-- <contextPath>/</contextPath>-->
<!-- </webAppConfig>-->
<!-- <systemProperties>-->
<!-- <!– enable easy connection to JConsole –>-->
<!-- <systemProperty>-->
<!-- <name>com.sun.management.jmxremote</name>-->
<!-- <value />-->
<!-- </systemProperty>-->
<!-- <!– Start an own broker –>-->
<!-- <systemProperty>-->
<!-- <name>webconsole.type</name>-->
<!-- <value>embedded</value>-->
<!-- </systemProperty>-->
<!-- <systemProperty>-->
<!-- <name>activemq.data</name>-->
<!-- <value>${project.build.directory}/activemq-data</value>-->
<!-- </systemProperty>-->
<!-- <!–-->
<!-- Use the following configuration to connect to a remote broker using JMX-->
<!-- <systemProperty>-->
<!-- <name>webconsole.type</name>-->
<!-- <value>properties</value>-->
<!-- </systemProperty>-->
<!-- <systemProperty>-->
<!-- <name>webconsole.jms.url</name>-->
<!-- <value>tcp://localhost:61616</value>-->
<!-- </systemProperty>-->
<!-- <systemProperty>-->
<!-- <name>webconsole.jmx.url</name>-->
<!-- <value>service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi</value>-->
<!-- </systemProperty>-->
<!-- –>-->
<!-- </systemProperties>-->
<!-- <scanIntervalSeconds>10</scanIntervalSeconds>-->
<!-- </configuration>-->
<!-- </plugin>-->
因爲我們使用Tomcat啓動項目,所以不需要這個Jetty相關的插件。
配置Tomcat
配置Tomcat容器啓動項,如下圖所示
運行項目,會報一個異常,是因爲缺少jstl的jar包導致,可以從maven中央倉庫下載jar包,並放到Tomcat的lib目錄中。再次啓動之後會打開瀏覽器,顯示如下畫面
可見項目啓動成功。可以在本地啓動一個Activemq服務,並通過這個控制檯查看服務的運行情況。
構建項目
通過終端進入activemq-web-console目錄,執行
mvn install
中間會報一些錯,但最後還是build success。
項目會構建成功,並在target目錄中生成一個war包activemq-web-console-5.15.5.war。將這個war包拷貝到Tomcat的webapps中。
通過tomcat\bin\startup.sh啓動Tomcat,之後再次打開網址,會看到與從idea中啓動同樣的頁面。
總結
以上就是獨立部署Activemq控制檯的過程,可以用在通過Tomcat容器嵌入式啓動Activemq的場景,用來監控Activemq服務的運行情況。