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

相关文章

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境