MQTT——工具mosquitto使用及问题记录

1,Mosquitto 简介

Mosquitto是一款开源消息代理软件,实现了MQTT(Message Queuing Telemetry Transport)协议。Mosquitto提供了一个可靠的消息传输机制,提供轻量级的,支持可发布/可订阅的的消息推送模式,允许设备和应用程序通过发布和订阅消息进行通信,使设备对设备之间的短消息通信变得简单。它支持多种编程语言和平台,并且具有低延迟和高可扩展性的特点。

Mosquitto的一个典型应用案例就是Andy Stanford-ClarkMosquitto(MQTT协议创始人之一)在家中实现的远程监控和自动化。并在OggCamp的演讲上,对MQTT协议进行详细阐述。

Mosquitto的主要特性包括:

1)支持发布/订阅模式:设备可以发布消息到特定的主题,其它设备可以订阅这些主题来接收消息。

2)安全性:支持TLS/SSL加密传输,可以保证消息的安全性。

3)持久化:支持消息的持久化存储,确保即使在断开连接后也能接收到未读消息。

4)认证和授权:可以配置用户认证和访问控制规则,确保只有授权的设备可以发布和订阅消息。

5)集群支持:可以通过配置多个Mosquitto实例来实现高可用和负载均衡。

2,下载Mosquitto 

Download | Eclipse Mosquitto

3,安装Mosquitto

双击 mosquitto-2.0.18a-install-windows-x64.exe 进行安装

4,本地使用 Mosquitto

默认按照好的mosquitto只能在本地使用。
如果要在客户端计算机和远程mqtt服务器之间进行mqtt操作(订阅消息,上传消息),需要修改配置文件mosquitto.conf

在本地使用mosquitto,在安装目录中的README.md中有描述

修改配置文件

4.1,本地启动mqtt服务

打开新的cmd

4.2,从本地mqtt服务器订阅消息

打开新的cmd

4.3,本地发送消息到本地mqtt服务器

这块文档上写的不对,会报错。原因是消息必须用"符号包裹,而不是用’符号包裹。
打开新的cmd

这里要注意的是发送消息时的主题,必须和订阅的主题一样才行. e.g. 都是 ‘test/topic’

5,远程使用 Mosquitto

将服务装在远程计算机上,在本地发送mqtt消息
正常用的话,mqtt客户端和mqtt服务器都不在一台计算机上。
默认安装的 mosquitto,是不支持从本地mqtt客户端访问远程mqtt客户端的。

假设远程装了mosquitto的计算机IP为 10.4.22.37

现在远程计算机上安装mosquitto,这个步骤和本地相同。

从本地mqtt客户端访问远程mqtt服务器,需要认证,要配置用户名,口令。
用 mosquitto_passwd.exe 来配置mqtt登陆认证的存根文件,用户名是明文,口令是密文HASH, 防止有人登入mqtt服务器所在物理计算机,看到口令明文。

5.1,修改配置文件

修改配置文件如下:其中端口号1999 可更改,IP等信息亦可更改;

直接用命令行启动
因为安装后的目录需要管理员权限,先用管理员模式启动cmd(假设服务没启动)

5.2,添加用户

.\mosquitto_passwd.exe .\pwfile.example user1

pwfile.example 内容如下:

5.3,mqtt服务器订阅消息

打开新的cmd

5.4,发送消息到mqtt服务器

这块文档上写的不对,会报错。原因是消息必须用"符号包裹,而不是用’符号包裹。
打开新的cmd

6,问题记录

问题1:Error: 由于目标计算机积极拒绝,无法连接。

 解决方法:.\mosquitto.exe 服务未启动

问题2:无法将“mosquitto_sub”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

解决方法:写全命令名

问题3:Error:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

解决方法:

1)查找被占用的端口

// 查找使用的端口
netstat -ano
// 查找指定的端口
netstat -ano |findstr 1883

2)停用端口

// 停用端口
taskkill -PID 66836 -F
// 查看占用此端口的进程,在任务管理器中强制结束
tasklist|findstr 66836 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值