rabbitmq之mqtt的坑(qos2 not supported for connection)

之前的文章中我也有介绍mqtt,这次遇到一个问题,让我百思不得其解,由于之前在我的调试之下解决了问题,主要是部署在服务器上的mqttServer用的clientid和我本地测试用的代码用的clientid重复了,后来纠正后可以正常使用了,但是最近又不能用了,想想哪里肯定又又设置问题了。
遇到这种问题的解决思路有。

1.首先想想最近做了什么可能会影响到rabbitmq?
2.查看rabbitmq下的log日志,查看配置报什么错
3.在服务器中进入到rabbitmq的日志中,用cd /var/log/rabbitmq
tailf rabbit@dev-shxjhl-shipinzhuang-01.log
加载日志,然后再调用mqtt,看看报什么错

以下是报错信息


image.png

主要报错信息是qos2 not supported,意思是不支持rabbitmq_web_mqtt
于是我进入到服务器执行了rabbitmq-plugins enable rabbitmq_web_mqtt发现是not found


image.png

然后执行指令rabbitmq-plugins list查看,再rabbitmq_mqtt前面有E*说明插件已经安装并启用,但是rabbitmq_web_mqtt确没有,所以怀疑是rabbitmq的版本问题。于是查看官网发现rabbitmq的最新版本是3.7.9,而我centos上的版本是3.6的,怪不到没有rabbitmq_web_mqtt插件了。于是我重新下载了最新版本的rabbitmq,另外还需要使用最新版的elang安装即可.

image.png

安装成功后

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常用命令行汇总

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 整体架构 部署步骤 基于 Docker 基本概念内存节点只保存状态到内存,例外情况是:持久的 queue 的内容将...
    mvictor阅读 14,368评论 5 30
  • 前言 这个是学校的SRP项目。去年12月做了大概3周。直接摘个人总结报告如下:在本次“学生研究计划”项目,研究课题...
    fightfa阅读 11,961评论 1 23
  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    中v中阅读 5,952评论 0 20
  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    Johnson_zx阅读 4,760评论 0 5
  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    预流阅读 586,109评论 51 787

友情链接更多精彩内容