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

news/2024/9/18 21:01:45/ 标签: 学习

前言

  • 物联网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.ppmy.cn/news/1518279.html

相关文章

SQL存储过程:数据库编程的瑞士军刀

SQL存储过程:数据库编程的瑞士军刀 在数据库管理系统中,存储过程是一种强大的工具,它允许开发者将SQL代码封装在可重用的单元中。存储过程不仅可以提高数据库操作的效率,还可以增强数据的安全性和一致性。本文将详细介绍SQL存储过…

速盾:如何选择适合企业的高防 IP 和 CDN?

在当前互联网时代,企业面临着越来越多的网络安全威胁,其中之一就是DOS/DDOS攻击。为了保护企业的在线业务,很多企业都会选择使用高防IP和CDN服务。然而,如何选择适合企业的高防IP和CDN服务呢?下面是一些关键因素可以帮…

《黑神话:悟空》游戏中的福建元素

《黑神话:悟空》作为一款深受玩家喜爱的动作角色扮演游戏,不仅在游戏剧情和角色设计上独具匠心,还巧妙地融入了丰富的中国传统文化元素,其中福建元素尤为突出。以下是对游戏中福建元素的详细解析: 一、地域文化与背景…

本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式:4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

十分钟弄懂最快的APP自动化工具uiautomator2

相信很多使用appium做过APP自动化的人都深有感触: appium运行慢、时间长uiautomatorviewer定位元素时得关掉appium server在低版本的appium上获取toast需要切换automationName 现在有一款自动化测试工具uiautomator2,它几乎完美的避免了以上的问题。简…

CSS选择器的魔法:探索:not-child()与:nth-child()

CSS选择器是前端开发中的强大工具,它们允许我们以精确的方式选择和操作网页上的元素。在这篇文章中,我们将深入探讨两个非常有用的CSS选择器::not-child()和:nth-child()。通过这些选择器,我们可以创建动态且具有吸引力的网页布局…

如何监控Eureka集群:Prometheus与Grafana的监控集成

如何监控Eureka集群:Prometheus与Grafana的监控集成 在微服务架构中,Eureka作为服务注册与发现的解决方案扮演着关键角色。为了确保Eureka集群的健康和性能,监控其状态是至关重要的。Prometheus和Grafana是现代监控和可视化工具的佼佼者&…

全志/RK安卓屏一体机:医疗自助服务终端,支持鸿蒙国产化

医疗自助服务终端 为了解决传统医疗模式下的“看病难、看病慢”等问题,提高医疗品质、效率与效益,自助服务业务的推广成为智慧医疗领域实现信息化建设、高效运作的重要环节。 医疗自助服务终端是智慧医疗应用场景中最常见的智能设备之一,它通…

Linux虚拟机搭建K8S环境

文章目录 一、环境准备二、系统初始化三、部署master四、添加node节点五、部署网络六、部署dashboard七、登录dashboard面板 一、环境准备 首先在vmware上新建4台相同配置的虚拟机,除了IP和主机名外,其余配置相同。由于是搭建K8S初始环境,没…

-[meetingbot4ios.AppDelegate window]: unrecognized selector sent to instance

这个错误的困扰了我半天,具体错误如下: *** Terminating app due to uncaught exception NSInvalidArgumentException, reason: -[meetingbot4ios.AppDelegate window]: unrecognized selector sent to instance 0x60000370c0c0 *** First throw call …

bash代码片段snippets

bash代码片段 # Rename all *.txt to *.text for file in *.txt; domv -- "$file" "${file%.txt}.text" donewhile read x z y; doof"xag.1/$x.png" if"xag/$y.png"cp $if $of done < db.log tree -L 2 | sed s/\xc2\xa0/ /g &g…

以数据安全筑牢新时代旅游安全之基,硬盘文件数据销毁,硬盘销毁

在数字化高速发展的时代&#xff0c;旅游行业也迎来了大数据的浪潮。全国旅游标准化技术委员会近日发布标准《旅游大数据安全与隐私保护要求&#xff08;征求意见稿&#xff09;》&#xff0c;并公开征求意见&#xff0c;截止时间为 2024 年 10 月 8 日。这一举措无疑为新时代旅…

Eureka的生命周期管理:服务注册、续约与下线的完整流程解析

目录 引言Eureka概述 2.1. 什么是Eureka 2.2. Eureka的核心概念Eureka服务注册的流程 3.1. Eureka客户端的启动 3.2. 服务实例向Eureka Server注册 3.3. Eureka Server的处理与响应Eureka服务续约的流程 4.1. 心跳机制的作用 4.2. 客户端续约的流程 4.3. 续约失败的处理 4.4. …

如何在Java中使用protobuf

写在前面 本文看下在Java中如何使用protofbuf。 1&#xff1a;介绍 1.1&#xff1a;什么是protobuf 是一种数据格式&#xff0c;同json&#xff0c;xml&#xff0c;等。但是一种二进制数据格式。 1.2&#xff1a;强在哪里&#xff1f;为啥要用&#xff1f; 小&#xff0c…

Linux基础知识(一、什么是Linux)

一、Linux之父——林纳斯本纳第克特托瓦兹&#xff08;Linus Benedict Torvalds&#xff09; Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,最初被发布的LINUX0.02版本因其高质量的代码与开放源代码&#xff0c;迅速引起了一大批黑客的加…

【大模型LLMs】文本分块Chunking调研LangChain实战

【大模型LLMs】文本分块Chunking调研&LangChain实战 Chunking策略类型1. 基于规则的文本分块2. 基于语义Embedding分块3. 基于端到端模型的分块4. 基于大模型的分块 Chunking工具使用&#xff08;LangChain&#xff09;1. 固定大小分块&#xff08;字符&token&#xff…

数据结构:(OJ题力扣 20). 有效的括号

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

57. 插入区间【 力扣(LeetCode) 】

一、题目描述 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表 intervals&#xff0c;其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束&#xff0c;并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示另一…

java中的Opencv:Opencv简介与开发环境部署

文章目录 1.Opencv简介Opencv的应用 2.Java使用OpenCV进行图像操作opencv安装java项目中集成Opencv 3.Opencv常用的API 1.Opencv简介 OpenCV &#xff08; Open Source Computer Vision Library &#xff09;是一个广泛应用于计算机视觉和图像处理领域的开源库。它提供了丰富的…

【读书笔记-《30天自制操作系统》-11】Day12

从本篇内容开始讲解定时器。本篇内容比较简单&#xff0c;首先介绍定时器的概念与设置方法&#xff0c;然后介绍超时的中断处理&#xff0c;并对中断处理函数进行了优化。 1. 定时器 定时器是操作系统中十分重要的功能。它的原理很简单&#xff0c;只是每隔一段时间发送一个…