之前的文章中我也有介绍mqtt,这次遇到一个问题,让我百思不得其解,由于之前在我的调试之下解决了问题,主要是部署在服务器上的mqttServer用的clientid和我本地测试用的代码用的clientid重复了,后来纠正后可以正常使用了,但是最近又不能用了,想想哪里肯定又又设置问题了。
遇到这种问题的解决思路有。
1.首先想想最近做了什么可能会影响到rabbitmq?
2.查看rabbitmq下的log日志,查看配置报什么错
3.在服务器中进入到rabbitmq的日志中,用cd /var/log/rabbitmq
tailf rabbit@dev-shxjhl-shipinzhuang-01.log
加载日志,然后再调用mqtt,看看报什么错
以下是报错信息
主要报错信息是qos2 not supported,意思是不支持rabbitmq_web_mqtt
于是我进入到服务器执行了rabbitmq-plugins enable rabbitmq_web_mqtt发现是not found
然后执行指令rabbitmq-plugins list查看,再rabbitmq_mqtt前面有E*说明插件已经安装并启用,但是rabbitmq_web_mqtt确没有,所以怀疑是rabbitmq的版本问题。于是查看官网发现rabbitmq的最新版本是3.7.9,而我centos上的版本是3.6的,怪不到没有rabbitmq_web_mqtt插件了。于是我重新下载了最新版本的rabbitmq,另外还需要使用最新版的elang安装即可.
安装成功后
1.rabbitmqctl stop_app:关闭应用(关闭当前启动的节点)
2.rabbitmqctl reset:从管理数据库中移除所有数据,例如配置过的用户和虚拟宿主, 删除所有持久化的消息(这个命令要在rabbitmqctl stop_app之后使用),重置以后,用户,虚拟vhost,都会清除
3.rabbitmqctl start_app:启动应用,和上述关闭命令配合使用,达到清空队列的目的
4.username and password are both "admin" 设置用户名和密码
rabbitmqctl add_user admin admin
rabbitmqctl set_permissions -p / admin".*" ".*" ".*"
rabbitmqctl set_user_tags admin management
设置用户名和密码都是admin,并设置虚拟主机(virtual host的作用就相当于给rabbitmq又设置了另外一个mq服务器,并且每个virtual host都是独立,可以做到解耦,这样在做大型项目的时候,比如订单服务可以设置/order_virtual,短信服务/message_virtual等
本次解决mqtt的qos2 not supported,阅读了以下相关文章,学到的东西还是不少的。
常用mqtt指令:
cd /var/log/rabbitmq
tailf rabbit@dev-shxjhl-shipinzhuang-01.log 这个主要是查看日志,其他日志也可以使用tailf
1)常用的一些查询和设置命令行
rabbitmqctl list_queues:查看所有队列信息
rabbitmqctl stop_app:关闭应用(关闭当前启动的节点)
rabbitmqctl start_app:启动应用,和上述关闭命令配合使用,达到清空队列的目的
rabbitmqctl reset:从管理数据库中移除所有数据,例如配置过的用户和虚拟宿主, 删除所有持久化的消息(这个命令要在rabbitmqctl stop_app之后使用),重置以后,用户,虚拟vhost,都会清除
rabbitmqctl force_reset:作用和rabbitmqctl reset一样,区别是无条件重置节点,不管当前管理数据库状态以及集群的配置。如果数据库或者集群配置发生错误才使用这个最后的手段
rabbitmqctl status:节点状态
rabbitmqctl add_user username password:添加用户
rabbitmqctl list_users:列出所有用户
rabbitmqctl list_user_permissions username:列出用户权限
rabbitmqctl change_password username newpassword:修改密码
rabbitmqctl add_vhost vhostpath:创建虚拟主机
rabbitmqctl list_vhosts:列出所有虚拟主机
rabbitmqctl set_permissions -p vhostpath username ".*" ".*" ".*":设置用户权限
rabbitmqctl list_permissions -p vhostpath:列出虚拟主机上的所有权限
rabbitmqctl clear_permissions -p vhostpath username:清除用户权限
rabbitmqctl -p vhostpath purge_queue blue:清除队列里的消息
rabbitmqctl delete_user username:删除用户
rabbitmqctl delete_vhost vhostpath:删除虚拟主机
相关文章:
chrome调试mqtt
window安装MQTT服务器和client
MQ 客户端收发 MQTT 消息
酷炫MQTT实现消息推送
RabbitMQ远程访问配置
解决RabbitMQ远程不能访问的问题
RabbitMQ远程调用测试用例
rabbitmq_mqtt官网
rabbitmq_web-mqtt官网
rabbitmq常用命令行汇总