mqtt的本地数据上云的思路解析(个人记录)

前言

本文旨在通过mqtt的工具简述mqtt数据上云的过程,为编写mqtt服务器及mqtt客户端的架构提供参考,需要对mqtt服务的使用有所理解

一、部署前准备

在这里插入图片描述

  1. 准备服务器:我这里是准备的阿里云的服务器,需要在安全组中将mqtt的端口开放(mqtt端口默认是1883)
    在这里插入图片描述

  2. 安装mosquitto:需要在服务器端安装mosquitto(安装过程省略,下一步式安装)
    安装完成后默认是只能127.0.0.1本地访问,在配置项中设置可远程访问,云端有mqtt服务安全性考虑的可设置密码(设置密码的方法本文不说明)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    安装完成后,在服务中启动
    在这里插入图片描述

  3. 安装MQTTX(过程不说明,下一步式安装)
    在这里插入图片描述

二、开始测试

  1. 在服务器中找到mqtt的安装路径,打开cmd,输入命令(该命令为服务器监听客户端的动作)
mosquitto_sub -h localhost -t "#" -v
  1. 在电脑上打开MQTTX,填写信息进行连接
    在这里插入图片描述
  2. 连接成功,进行主题及消息配置
    在这里插入图片描述
    在这里插入图片描述
  3. 点击发送,效果如下
    在这里插入图片描述
    在这里插入图片描述

三、扩展

在 MQTT 中,不同客户端向同一主题发送消息时,消息内容本身通常并不会带有特定的客户端标识。为了区分是哪个客户端发布的消息,通常使用以下方法:

  1. 在消息内容中嵌入客户端标识
    可以在消息的 payload(有效负载)中添加客户端的标识,例如 Client ID 或其他唯一标识。这样,订阅者在收到消息时,可以通过读取 payload 中的标识来区分是哪一个客户端发送的消息。
    示例:
{
  "clientId": "Client1",
  "message": "Hello from Client1"
}

订阅方在处理消息时,可以解析出 clientId 来识别发送者。
2. 使用不同的 Client ID 并在服务器端日志中查看
MQTT 服务器通常会记录连接的 Client ID 及其发布的消息信息。通过访问服务器日志(如 Mosquitto 服务器日志),可以看到各个客户端的发布记录。
适用场景:用于调试或后台监控,不适合实时业务逻辑。
3. 使用主题分层来表示客户端
可以给每个客户端分配一个唯一的主题。例如,使用层级结构来管理主题,将客户端的标识作为主题的一部分:

client1/topic_name
client2/topic_name

这样即使不同客户端发送相同内容,主题也可以帮助订阅者识别是哪一个客户端发送的。
示例:
订阅方订阅 +/topic_name,+ 是通配符,可以匹配所有客户端发送的消息,并通过解析主题前缀来区分不同客户端。
4. 使用 MQTT 消息头属性(MQTT 5.0 以上版本)
在 MQTT 5.0 中,可以利用消息的用户属性(User Properties)来传递自定义信息,例如客户端标识。
发布方可以在消息的用户属性中加入 Client ID 等信息,订阅方可以读取用户属性来识别发送者。
示例:

var message = new MqttApplicationMessageBuilder()
    .WithTopic("shared/topic")
    .WithPayload("Hello")
    .WithUserProperty("ClientId", "Client1")
    .Build();
  1. 通过连接验证记录客户端身份(仅限服务器)
    如果 MQTT 服务器支持身份验证,可以在连接阶段记录客户端的 Client ID 和用户信息,供后续的发布或订阅分析。
    某些服务器可以在认证和连接验证时,将 Client ID 与用户信息关联并存储,以备后续区分客户端消息的发送者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落雪寒窗-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值