MQTT学习:MQTT vs AMQP,mosquitto安装,调试工具mqttfx mqttx

2024-08-30 19:20

本文主要是介绍MQTT学习:MQTT vs AMQP,mosquitto安装,调试工具mqttfx mqttx,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

  • 物联网vs互联网?
    数据量/数据源:物联网的数据多是设备的自动采集,其数量远远超过互联网,互联网的数据更多是人工生成的

  • MQTT 协议(Message Queuing Telemetry Transport)vs AMQP 协议(Advanced Message Queuing Protocol)是两种在物联网中广泛使用的协议。
    物联网应用的独特:
    (1) 大量设备和中心系统的通信
    在这里插入图片描述

(2)设备所处的环境资源有限,例如深山老林中低功耗或者不稳定的网络

  • 消息中间件与调试工具
    MQTT: mosquitto;调试工具:MQTTfx(mqtt3.1之后要收费)、Mqtt x(免费,来自EMQX)
    AMQP:rabbitmq

注意区分消息传输协议与消息中间件

一、MQTT

协议

  • 场景: 资源受限的设备和低带宽、高延迟或不可靠的网络环境,IOT场景

  • 发布/订阅模式:客户端订阅(subcribe)主题(topic),获得发布的消息,消息内容:【topic】+payload

  • 适合轻量级(报文小)

  • 客户端可以是publisher或subscriber

  • Qos( 质量服务等级) 可以保证消息传输的可靠性
    0:最多发一次。以发送端发完结束
    1:最少发一次。以发送段收到接收端的PUBACK确认接收消息后结束。接收端断可能收到重复信息
    2:保证收一次。发送段和接收端将要进行两次确认。消息不回丢失或重复。
    所以,可见qos=2是最安全的,但是速度和安全不可兼得

  • 安全: 支持TLS加密 ,用户名和密码的身份验证

在这里插入图片描述

  • 持久化:broker默认不能持久化,但是可以设置publish的‘retain’标志,这样broker就能实现消息存储

二、MQTT消息中间件

也就是上图的MQTT Broker的软件系统实现

所有消息中间件其实都是相当于建立了一个MQTT Broker或AMQP Broker

1. EMQX

开源

2. mosquitto

在这里插入图片描述

(1)安装

windows(不推荐)

下载地址:https://mosquitto.org/download/
安装:mosquitto
修改配置文件:
在这里插入图片描述

// 侦听7788端口
listener 7788// 不允许匿名用户登录
allow_anonymous false// 指定配置的用户文件(也就是用户名和密码)的路径(绝对)
password_file D:\Program Files\mosquitto\pwfile.example

创建用户名和密码,admin admin
在这里插入图片描述
创建完成后:
在这里插入图片描述

进入服务,打开mosquitto服务
在这里插入图片描述

Linux

centos7
mqtt 3.1.1

yum install mosquitto
# 安装后自动注册为系统服务,可通过systemctl操作
systemctl start mosquitto
systemctl status mosquitto

好像yum最新只能安装到1.6版本的了。

启动后mosquitto -v 给出的版本号是 1.6.1

注意,1.6.1是mosquitto的版本,3.1.1是mqtt的版本号。
在这里插入图片描述

默认端口 1883
默认用户名和密码: 没有

使用mqttfx,直接就是ip:端口匿名连接
在这里插入图片描述

安装2.0以上版本

因为不想要额外自己安装鉴权插件-

  • 源码下载(2.0.18)
    https://mosquitto.org/download/

(2) 配置文件启动

除了systemctl 启动外,还可以用mosquitto -v的方式启动,不过,必须要指定配置文件

因为启动没有带配置文件,则采用的都是默认配置,默认1883,默认允许匿名

(3)创建新用户

vim  /etc/mosquitto/mosquitto.conf
  • 设置不允许匿名连接
    在这里插入图片描述

  • 配置 存储密码的文件
    在这里插入图片描述
    passwd这个文件中保存用户名和密码。

  • 同时通过mosquitto_passwd 创建新用户

[root@ecs-30f1 mosquitto]# mosquitto_passwd -c /etc/mosquitto/passwd ttyMos
Password: 
Reenter password: 
[root@ecs-30f1 mosquitto]# systemctl restart mosquitto
异常:无效的密码

增加登录凭证之后,登录报错:
mosquitto -v的报错: Error: Invalid password hash for user tty, removing entry.
在这里插入图片描述

客户端用正确的用户名密码登录,也报错:
not authorized to connect
在这里插入图片描述

解决:
其实提示给的很明显了,invalid password hash for user tty ==密码的hash加密无效

还得是官网,
在这里插入图片描述

针对1.6.10的版本需要指定用sha512加密方式-H sha512

 mosquitto_passwd -H sha512 -c /etc/mosquitto/passwd.conf admin

(4)用户和权限

需要提前声明的是,主题是用户创建的,但是前提是用户有创建主题的权限。

(5) 测试

在更换用户登录方式后,用非正确的用户名和密码还能连接?

不过前提是在mosquitto -v中进入,systemctl 开启的mosquiito服务报的异常则是not authirized

异常: 缺少cJSON依赖

执行make命令时
在这里插入图片描述

这里是缺少cjson的依赖,尝试用yum安装,但是找不到这个依赖

这里进行手动安装

  • 下载源码包:https://github.com/DaveGamble/cJSON
git clone https://github.com/DaveGamble/cJSON.git
  • 安装
cd cJSON/
mkdir build
cd build/
cmake ..

在这里插入图片描述

make
make install

安装后可发现cJson的静态/动态库生成链接存放在/usr/local/lib64中

这篇关于MQTT学习:MQTT vs AMQP,mosquitto安装,调试工具mqttfx mqttx的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121709

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只