如何启用activemq artemis rest api 特性

在一次项目中需要使用activemq artemis mqtt 协议通信特性,需要借助rest api 功能按clientId 查询是否在线,也就是如何通过client id 查询 设备是否在线需要借助rest api 特性,默认情况artemis 不提供rest api 特性,在网搜索了一了,再借助官网的文档,需要build 一个war包 放 到web目录下即可,然后 重启程序

但 在build 过程不是顺利,记录一下报错处理方法

github 提供的源代码,需要build ,即 mvn package

jirkadanek/artemis-rest: Give your ActiveMQ Artemis Message Broker a REST interface (github.com)

官网提供的文档,如何开启rest api 特性

REST Interface · ActiveMQ Artemis Documentation (apache.org)

stackoverflow 提供的类似的问答 参考 配置参考

java - Artemis rest interface - Stack Overflow

maven - REST interface on ActiveMQ Artemis - Stack Overflow

在集群模式下,如何开集,master/salver

java - How to enable REST in an ActiveMQ Artemis cluster - Stack Overflow

build 报错如下

[ERROR] Failed to execute goal on project artemis-rest-embedded: Could not resolve dependencies for project com.github.jdanekrh:artemis-rest-embedded:war:1.0-SNAPSHOT: Failure to find o
rg.apache.activemq.rest:artemis-rest:jar:2.18.0 in http://maven.aliyun.com/nexus/content/repositories/central/ was cached in the local repository, resolution will not be reattempted unt
il the update interval of alimaven has elapsed or updates are forced -> [Help 1]
[ERROR]

解决方法,根据上述报错,原因为找不到artemis-rest:jar:2.18.0 其 版本为 2.18.0 但是pom.xml 里面写的RELEASE, why?

这里我就把改成对应版本,版本从maven 中央仓库得到最新版本

再执行以下命令

mvn install clean -U

然后再执行以下命令,就是打包了

mvn package

image-20210831195034813

将得到的war包放到web目录下,记得一定要重命名 activemq-rest.war

image-20210831195919395

还有最关键一步如下,就是在etc目录下的bootstrap.xml 文件位置,添加 你需要启动的war包

   <!-- The web server is only bound to localhost by default -->
   <web bind="http://localhost:8161" path="web">
       <app url="activemq-branding" war="activemq-branding.war"/>
       <app url="artemis-plugin" war="artemis-plugin.war"/>
       <app url="console" war="console.war"/>
	   <app url="console" war="activemq-rest.war"/><!--添加这一行即可-->
   </web>

重启activemq artemis