项目里需要使用代码删除mqtt队列的操作,在Java里操作MqttClient类的时候只看到了 订阅与取消,并没有看到关于删除队列的方法,所以只能自己写了,考虑过使用Activemq命令删除但是不好用,后来选择通过mqtt管理端进行删除一系列的操作
教程开始
package com.tengnat.dwork.common.utils; import com.tengnat.dwork.BaseTest; import org.junit.Test; import org.springframework.beans.factory.annotation.Value; /** * Created by SkinApe on 2022/1/13. */ public class MqttDelete extends BaseTest { //mqtt管理端秘钥 Basic YWRtaW46YWRtaW4= @Value("${project.mqtt.authorization}") String authorization; @Test public void delete(){ /** * * 下面每个接口Headers必须值:authorization:Basic YWRtaW46YWRtaW4= * * * 获取权限的token * http://192.168.1.47:8161/admin/secret.jsp * * 上面接口拿到的token:5f3a356b-7d05-40b4-a61b-aa6bcd27ef3c * * * 拼接删除队列的URL * * http://192.168.1.47:8161/admin/deleteDestination.action?JMSDestination=队列名/话题名&JMSDestinationType=队列/话题&secret=上面接口拿到的token * */ } }
重点:
1.获取登陆权限的key:登陆之后随便请求一个接口 拿到这个值(这个是固定的,只要不修改密码,一般mqtt管理服务都是内网,所以安全性没那么高)
2.获取请求接口必要参数token:通过访问secret.jsp 这个文件需要放到管理端目录,路径在admin下
创建一个secret.jsp文件 里面内容:${sessionScope["secret"]}
http://192.168.1.47:8161/admin/secret.jsp
3.拼接删除队列的URL
http://192.168.1.47:8161/admin/deleteDestination.action?JMSDestination=队列名/话题名&JMSDestinationType=队列/话题&secret=上面接口拿到的token *
还可以大胆想象就是 我们还可以操作控制台其它的操作,比如删除所有队列,查看队列里的信息
本文为程序员之家原创文章,转载无需和我联系,但请注明来自程序员之家www.baldhome.com