Windows下mosquitto服务端和MQTT.fx客户端搭建模拟环境

news2024/11/27 23:46:13

第一部分 Mosquitto安装测试
一、概念梳理
1、Mosquitto是一款实现了消息推送协议MQTT 3.1的开源消息代理软件,提供轻量级的、支持可订阅/可发布的消息推送模式,是设备与设备之间的短消息通信变得简单,广泛应用于低功耗传感器、手机(app消息推送是场景之一)、嵌入式电脑、微型控制器等移动设备。
2、那什么是MQTT,他的英文全称Message Queuing Telemetry Transport,翻译过来就是“消息队列遥测传输”,是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。
目前支持MQTT的服务器中间件有EMQTT、Mosquitto、Apollo。本章讲的就是Mosquitto。
3、MQTT的协议内容有很多,其中一个一定要知道,就是“消息发布服务质量”,只有三个值分别是:
QoS 0:“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
QoS 1:“至少一次”,确保消息到达,但消息重复可能会发生。
QoS 2:“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
!](https://img-blog.csdnimg.cn/a1f9b8e05f614ee39a6a2ff82f52b56e.png#pic_center)

二、下载与安装
1、Mosquitto存在很多版本,如果想体验比较新版本可以上github,但是比较麻烦的是需要自己去编译成windows文件,编译需要用到cmake软件,我之前操作过没问题,可以参照其他博主的文章:[https://blog.csdn.net/vwadev/article/details/50148265]。

官方后面提供了比较稳定的window安装版本,安装完成后可以直接使用,并且自动添加成 windows服务,非常方便,下载路径:https://mosquitto.org/download

下载地址

2、安装完成。如果需要使用,直接启动服务即可。

启动后显示

3、Mosquitto服务默认占用 1883端口,所以可不在配置文件中显式设置。

三、关于配置文件的一些重要说明
1、配置文件在安装目录下的mosquitto.conf,默认情况下不做任何修改,就可以启动mosquitto。
2、配置说明中出现的地址例如:“/var/run/mosquitto”,“/var/log/messages”,都是相对路径,相对于系统盘根目录。这个地方很重要,他可不是相对于安装目录的根目录。例如“/var/run/mosquitto”表示的是“c:\var\run\mosquitto”,我有一段时间一直没搞定,就是这个目录原因,很多人没有反馈这个问题,因为都是在linux用所以没啥问题。

3、安装目录的完整路径中,不能出现空格,否则在命令行就无法通过。Mosquitto默认安装路径是在“C:\Program Files\mosquitto”,这里面的“Program Files”就存在空格,导致很多问题,这个也要特别注意。所以后来我改为安装在“C:\MosquittoTest”

四、配置登录账号和密码(这里我直接用了MQTT,可省略)
1、如果想方便测试可以下载安装MQTT客户端(http://www.eclipse.org/paho/components/tool/),我自己是用这个,不过下面我们还是用原生的命令行操作:

在这里插入图片描述

2、在配置文件mosquitto.conf中,任意位置加入下面文本,保存退出(我说的全新安装的情况下,如果是维护已经使用很久的系统,可在配置文件中找到对应的属性进行更改)

#设置不允许匿名登录
allow_anonymous false
#设置账户密码文件位置为C:\MosquittoTest\pwfile.example
password_file /MosquittoTest/pwfile.example

3、重启mosquitto服务配置文件的修改才能生效。为了方便调试和操作,我们后面的操作全部通过命令行模式进行。

4、插入新用户名及密码,输入密码时界面是不会显示的,直接输入后回车就可以,需要连续输入两次。保证pwfile.example的路径和上面的配置一致。下面打开CMD并进入mosquitto根目录输入:
mosquitto_passwd -c /MosquittoTest/pwfile.example FirstUserName (使用-c 参数会导致清空密码文件,重新插入用户)

mosquitto_passwd /MosquittoTest/pwfile.example SecondUserName (不使用-c 表示追加用户,不影响旧用户)

5、创建成功后pwfile.example会出现刚刚添加的用户信息。

在这里插入图片描述

6、启动mosquitto 进行测试。

首先启动第一个cmd窗口启动服务:mosquitto.exe -c mosquitto.conf
然后启动第二个cmd窗口订阅’dissun/topic’主题(其中dissun是账号,111111是密码):mosquitto_sub -u dissun -P 111111 -t ‘dissun/topic’ -v

最后启动第三个cmd窗口发布订阅’疯狂星期四’信息:mosquitto_pub -u dissun -P 111111 -t ‘dissun/topic’ -m ‘疯狂星期四’
安装成功

第二部分 MQTT.fx安装测试
1、下载安装完成后,打开客户端,如图填写,Broker地址,端口一般默认1883,Client ID可以随机生成,注意,1个Client ID只能单个客户端使用
在这里插入图片描述
2、点击Apply后,返回点击Connect进行连接,连接成功后,再选择Subscribe,订阅之前的主题
连接页面

订阅页面
3、订阅后,再选择Publish页,下拉框选择当前已订阅的主题,再输入需要发送的数据,点击Publish:
当前信息发布页
此时,再回到Subscribe页,可以看到已经接收到数据信息了
右下方显示当前接收到的数据信息
到这里,整个环境搭建就完成了,后续就可以进行模拟了。

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

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

相关文章

django跨域设置

1.安装 (venv) ***\data_analyse_web>pip install django-cors-headers 2.添加应用 :在settings.py中添加应用,放到任意位置都行 INSTALLED_APPS {# ...corsheaders,# ... } 3. 设置中间层,在settings.py中添加中间层,放到最前面 MIDDLEWARE [c…

【设计模式】23种设计模式——原型模式Prototype(原理讲解+应用场景介绍+案例介绍+Java代码实现)

原型模式 介绍 原型模式指用通过拷贝原型实例创建新的实例,新实例和原型实例的属性完全一致原型模式是一种创建型设计模式工作原理是通过调用原型实例的 clone()方法来完成克隆,原型实例需要实现Cloneable接口,并重写clone()方法需要为每个…

WSR-88D天气雷达工作模式、监测目标、反射率含义讲解

一、WSR-88D 简介 WSR-88D是天气监视多普勒雷达之一。自 1988 年首次建造和测试以来,它已在包括阿拉斯加和夏威夷在内的美国 160 多个地点安装和使用。WSR-88D也已安装在波多黎各和太平洋的几个岛屿。 WSR-88D雷达发射功率为750000瓦(平均灯泡只有75瓦)!这种功率使雷达产…

03. 自定义镜像 Dockerfile

目录 1、前言 2、构建镜像的方式 2.1、docker commit 2.1.1、先查看下当前的容器 2.1.2、生成该容器镜像 2.1.3、查看镜像列表 2.2、Dockerfile 2.2.1、创建Dockerfile文件 2.2.2、编写Dockerfile文件 2.2.3、构建镜像 2.2.4、使用该镜像生成容器 3、Dockerfile 3…

Docker 网络、资源控制

Docker 网络、资源控制 一、Docker 网络1、Docker 网络实现原理2、Docker 的网络模式:1.host模式2.container模式3.none模式4.bridge模式5.自定义网络 二、资源控制1.CPU 资源控制(1…

用echarts绘制流程图

getEchart1() {echarts.init(document.getElementById(echart1)).dispose();var chartDom document.getElementById(echart1);this.myChart echarts.init(chartDom);var charts {nodes: [ // 节点{name: 开始, value: [0, 500],label: {borderWidth: 1, // 边框宽度borderRa…

【CMU15-445 FALL 2022】Project #1 - Buffer Pool

About 实验官网 Project #1 - Buffer Pool在线评测网站 gradescope Lab Task #1 - Extendible Hash Table 详见——【CMU15-445 FALL 2022】Project #1 - Extendable Hashing 如果链接失效,请查看当前平台我之前发布的文章。 Task #2 - LRU-K Replacement Polic…

flink Mysql CDC(动态加表)、postgresqlCDC 和 CDC无锁算法

flinkCDC - 功能验证记录 flink 与cdc 版本使用搭配:flink cdc参数说明原理分析(DBLog)无锁算法论文 mysql cdccdc api 动态加表flink cdc sql 性能压测flink cdc api 性能压测 PostgreSqlCDC执行更新语句,会出现 2 种情况 cdc si…

【数据挖掘】bytewax 与 ydata工具可实时了解您的数据

一、说明 在这篇博文中,我们将介绍如何将开源流式处理解决方案 bytewax 与 ydata 分析相结合并加以利用,以提高流式处理流的质量。 STream 处理支持在传输中和存储之前对数据进行实时分析,并且可以是有状态的,也可以是无状态的。 …

[STL]vector使用介绍

[STL]vector使用介绍 注:文内代码均在Visual Studio 2013下进行测试,不同的编译器下在扩容大小等方面可能有所不同,但不影响各接口函数的使用。 文章目录 [STL]vector使用介绍1. vector介绍2. 构造函数3. 迭代器相关函数begin函数和end函数的…

实现点击复制到剪切板功能

该功能使用VueUse实现 什么是 VueUse VueUse不是Vue.use,它是为Vue 2和3服务的一套Vue Composition API的常用工具集,是目前世界上Star最高的同类型库之一。它的初衷就是将一切原本并不支持响应式的JS API变得支持响应式,省去程序员自己写相…

jmeter常用的提取器(正则表达式和JSON提取器)

jmeter常用的后置处理器有两种提取数据: 1、JSON提取器 获取后可以将变量token引用到其他所需要的地方 (正则表达式和JSON提取器):2023接口自动化测试框架必会两大神器:正则提取器和Jsonpath提取器_哔哩哔哩_bilibilihttps://www.bilibili.…

uniapp实战

上面是tab栏,下面是swiper,,tab和swiper和 红色滑块 动态变化,, 遇到的问题: 往下滚动 tab栏 吸顶: position:sticky; z-index:99; top:0;swiper切换触发 change 事件, :current …

SOMEIP协议--第四节[ SOME/IP](someip概述与行为)

SOMEIP协议–第四节[ SOME/IP](someip概述与行为) 文章目录 SOMEIP协议--第四节[ SOME/IP](someip概述与行为)1、概述2、someip的行为2.1 基础传输2.2 SOME/IP-TP传输:2.3 someip参数(client)2.4 someip参数(server)1、概述 Method | Event | Field是上层设计的三个概念…

【C++】优先级队列和反向迭代器 模拟笔记

文章目录 优先级队列仿函数适配器模式堆知识储备 反向迭代器代码(反向迭代器)代码(优先级队列) 优先级队列 仿函数 仿函数,它不是函数(其实是个类),但用法和函数一样。既然是个类&a…

子类化QThread来实现多线程,moveToThread函数的作用

子类化QThread来实现多线程, QThread只有run函数是在新线程里的,其他所有函数都在QThread生成的线程里。正确启动线程的方法是调用QThread::start()来启动。 一、步骤 子类化 QThread;重写run,将耗时的事件放到此函数执行&#…

轻量级Web报表工具ActiveReportsJS全新发布v4.0,支持集成更多前端框架!

ActiveReportsJS 是一款基于 JavaScript 和 HTML5 的轻量级Web报表工具,采用拖拽式设计模式,不需任何服务器和组件支持,即可在 Mac、Linux 和 Windows 操作系统中,设计多种类型的报表。ActiveReportsJS 同时提供跨平台报表设计、纯…

18.背景轮播

背景轮播 html部分 <div class"container"><div class"slide active" style"background-image: url(./static/20180529205331_yhGyf.jpeg);"></div><div class"slide " style"background-image: url(./s…

vue3+taro+Nutui 开发小程序(二)

上一篇我们初始化了小程序项目&#xff0c;这一篇我们来整理一下框架 首先可以看到我的项目整理框架是这样的&#xff1a; components:这里存放封装的组件 custom-tab-bar:这里存放自己封装的自定义tabbar interface&#xff1a;这里放置了Ts的一些基本泛型&#xff0c;不用…

AtcoderABC238场

A - Exponential or QuadraticA - Exponential or Quadratic 题目大意 给定一个整数 n&#xff0c;判断是否满足 2n >n 2。 思路分析 根据数学知识可知n 的取值在 2 到 4 之间&#xff08;包括 2 和 4&#xff09;&#xff0c;不满足条件 。 时间复杂度 O(1) AC代码 …