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

news2024/9/21 16:29:32

前言

  • 物联网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中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2096522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐一款灵活,可靠和快速的开源分布式任务调度平台

今天给大家推荐一款灵活,可靠和快速的开源分布式任务调度平台——SnailJob。 前言 什么是任务调度? 任务调度,是指在多任务的环境下,合理地分配系统资源,调度各个任务在什么时候,由哪一个处理器处理&…

【简单】 猿人学web第一届 第15题 备周则意怠,常见则不疑

数据接口分析 数据接口 https://match.yuanrenxue.cn/api/match/15 请求时需要携带 page 页码,m为加密参数 cookie中没有加密信息,携带 SessionId请求即可 加密参数还原 查看数据接口对应的 requests 栈 m参数 是通过 window.m() 方法执行后得到的 打上…

分布式系统中的Dapper与Twitter Zipkin:链路追踪技术的实现与应用

目录 一、什么是链路追踪? 二、核心思想Dapper (一)Dapper链路追踪基本概念概要 (二)Trace、Span、Annotations Trace Span Annotation 案例说明 (三)带内数据与带外数据 带外数据 带…

『 C++ 』多线程相关

文章目录 极短临界区互斥锁的短板原子操作类 atomicatomic 原子操作原理 CASCAS 操作解决多线程创建链表的节点丢失问题多线程下的 shared_ptr 智能指针最简单的单例模式 极短临界区互斥锁的短板 如果两个线程同时对一个共享资源变量x进行自增操作将会出现线程安全问题,这个线程…

官方宣布Navicat免费使用!

官方宣布Navicat免费使用! 对于开发者和数据库管理员来说,Navicat一直是不可或缺的工具之一。官方宣布Navicat可以免费使用,这无疑是个令人振奋的消息!虽然是精简版,但足够日常使用。文末有下载链接。 无论你是管理M…

Linux 文件接口和文件管理

目录 一、回顾c语言文件操作 二、系统调用的文件操作 系统调用文件接口 open: close: write: 代码测试: ​编辑 ​编辑 read: 语言和系统函数间的关系: flags的实现思路 三、OS内文件的管理 语…

时序预测 | 基于MAMbaS+transformer时间序列预测模型(pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MAMBAS,transformer python代码,pytorch架构 可以发刊,先发先的,高精度代码。 需知:好的创新性模型可以事半功倍。。 适合功率预测,风电光伏预测&#xff0…

ubuntu通过smba访问华为设备

文章目录 ubuntu通过smba访问华为设备华为设备设置ubuntu设置访问测试 ubuntu通过smba访问华为设备 华为设备设置 华为设备在华为分享一栏下有共享至电脑的选项,打开即可,这里会创建用户名和密码进入设置 -> 关于手机/平板电脑 -> 状态信息&…

Android 10.0 mtk平板camera2横屏预览旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,所以就需要看下mtk的camera2的相关预览功能,然后看下进入 launcher camera的时候看下如何实现预览横屏显示 如图所示: 2.mtk平…

【Linux】文件魔法师:时间与日历的解密(8/15完成)

欢迎来到 CILMY23 的博客 🏆本篇主题为:文件魔法师:时间与日历的解密 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码…

Golang | Leetcode Golang题解之第390题消除游戏

题目&#xff1a; 题解&#xff1a; func lastRemaining(n int) int {a1 : 1k, cnt, step : 0, n, 1for cnt > 1 {if k%2 0 { // 正向a1 step} else { // 反向if cnt%2 1 {a1 step}}kcnt >> 1step << 1}return a1 }

数学建模强化宝典(6)0-1规划

前言 0-1规划是决策变量仅取值0或1的一类特殊的整数规划。这种规划的决策变量称为0-1变量或二进制变量&#xff0c;因为一个非负整数都可以用二进制记数法用若干个0-1变量表示。在处理经济管理和运筹学中的某些规划问题时&#xff0c;若决策变量采用0-1变量&#xff0c;可把本来…

upload-labs-master靶场通关攻略

第一关 上传并进行抓包&#xff0c;修改后缀为php 第二关 抓包修改后缀 第三关 改后缀为php3 第4关 使用Apache的配置文件.htaccess来上传文件 然后再上传php文件 第5关 使用.user.ini来上传文件 然后再上传jpg文件 访问upload目录下的readme.php文件 第6关 大小写绕过 第…

公钥密码学

1. 非对称密码学 非对称密码学&#xff08;Asymmetric Cryptography) 中的 “非对称” 指的是用于加密数据的密钥和用于解密数据的密钥是不一样的&#xff08;如果一样&#xff0c;那就是对称密码学&#xff09;。对称密码学也称为共享密钥密码学。类似地&#xff0c;非对称密码…

大模型笔记01--基于ollama和open-webui快速部署chatgpt

大模型笔记01--基于ollama和open-webui快速部署chatgpt 介绍部署&测试安装ollama运行open-webui测试 注意事项说明 介绍 近年来AI大模型得到快速发展&#xff0c;各种大模型如雨后春笋一样涌出&#xff0c;逐步融入各行各业。与之相关的各类开源大模型系统工具也得到了快速…

neural-admixture:基于AI的快速基因组聚类

最近学习祖源分析方面的内容&#xff0c;发现已经有了GPU版的软件&#xff0c;可以几十倍地加快运算速度&#xff0c;推荐使用&#xff01;小数据集的话家用显卡即可hold住&#xff0c;十分给力&#xff01; ADMIXTURE 是常用的群体遗传学分析工具&#xff0c;可以估计个体的祖…

注册中心技术选型

优质博文&#xff1a;IT-BLOG-CN 市面上流行的开源注册中心很多&#xff0c;耳熟能详的有Eureka、Zookeeper、Nacos、Consul。我们在选型的时候也主要从这四个组件中进行筛选。下面就对我们内部的讨论内容进行整理&#xff1a; 第一个维度&#xff1a;开源公司的实力 Eureka…

InceptionV4 Pytorch 实现图片分类

一、目录结构 训练过程&#xff1a; 在训练集和测试集分类目录中放好待训练的分类图片&#xff08;f1,f2,f3&#xff09;运行模型训练代码&#xff0c;生成模型参数文件运行分类测试文件&#xff0c;设置待验证的图片路径&#xff0c;调用模型文件得出分类结果 二、模型构建代…

Auto-Unit-Test-Case-Generator -- java项目自动测试生成

0.Pre-预备知识&#xff1a; 0.1.Maven是什么&#xff1f; [by Maven是什么&#xff1f;有什么作用&#xff1f;Maven的核心内容简述_maven是干什么用-CSDN博客 ] 是Java 领域中最流行的自动化构建工具之一&#xff0c;Maven 作为 Java 项目管理工具&#xff0c;具有: 包管…

AI的基本使用

AI使用 一、网页端AI二、手机端AI三、AI提问指令大全四、AI绘画 一、网页端AI 讯飞星火网页版百度文心一言通义万相&#xff08;主要用于生图&#xff09;通义听悟&#xff08;主要用于音频&#xff09;通义智文&#xff08;主要用于生文&#xff09;腾讯文档里的智能助手&…