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

相关文章

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor