MQTT之NanoMQ基本使用及MQTTX客户端使用

一、MQTT简介

MQTT是一种轻量级的协议,基于发布 /订阅模式的消息传输协议, MQTT 目前是物联网传输协议标准。和其他的消息队列一样(kafka、rabbitMQ、rovketMq等),只是协议比较轻,资源占用小等优点适用于物联网边缘设备的通信,数据传输。

二、NanoMQ

NanoMQ 是于 2021 年初发布的边缘计算开源项目,是面向物联网边缘计算场景的下一代轻量级高性能 MQTT 消息服务器。

2.1 功能特性

完整支持 MQTT 5.0:完整支持 MQTT 5.0/3.1.1,与所有标准 MQTT 开源 SDK 兼容。

MQTT 桥接:内置 MQTT 多云桥接功能,简单配置即可接入各类流行的云服务建立云边通道进行多地数据同步。

规则引擎:内置简单规则引擎可以灵活处理边缘数据。也可以与 eKuiper 集成在边缘进行流式数据分析。

消息持久化:针对物联网复杂网络环境场景设计数据持久化和数据缓存功能,桥接消息可以本地缓存后断网续传。重要数据可以在边缘持久化滚动更新。

丰富的集成 API:提供可拓展的事件驱动型 WebHook 接口和运维友好的 HTTP APIs,帮助减少边缘计算应用开发和集成的成本。

多协议网关:通过协议网关支持 nanomsg/ZeroMQ/Websocket 等常用的消息协议,方便在边缘建立灵活的数据路由拓扑。并提供连接加密和安全保障。

MQTT STREAM: 对于同一topic的MQTT消息,可以看做一条数据流,并且这个数据流是可以进行落盘存储以及查询操作的,对于一些网络较差的环境下,为数据的完整性和可靠性提供了解决方案.

2.2 核心优势

超轻量:MQTT 服务可以低至 200Kb 的内存占用启动。

全异步 I/O:针对物联网和 MQTT 内建 Actor 编程模型并行化计算负载。

多线程并行:优秀的可拓展性,具有良好的多核 SMP(对称多处理)支持和多线程性能。

高性能:边缘百万级消息处理能力。

跨平台:可无缝移植到任何基于 POSIX 的系统平台。

互操作性:数据透明,拓展接口丰富,易于和各类边缘计算框架集成。

三、 NanoMQ 安装部署

以下以windows部署演示

直接下载,下载完成后进行解压,再进行后面操作

官方下载链接:下载 NanoMQ

NanoMQ常用命令:配置说明 | NanoMQ 文档

3.1 官方下载

官方下载链接:下载 NanoMQ

解压完成

3.2 添加环境变量

添加环境变量,可全局使用NanoMQ命令,方便启动

3.3 启动NanoMQ服务器

打开cmd 运行以下命令即可

nanomq start --conf C:\Users\Administrator\Desktop\fsdownload\nanomq-0.21.5-windows-x86_64\config\nanomq.conf

nanomq start --conf C:\Users\Administrator\Desktop\fsdownload\nanomq-0.21.5-windows-x86_64\config\nanomq.conf

注意:后面的配置文件路径为对应的config下面的文件路径,需要修改!

3.4 模拟发布订阅进行测试

订阅者:

发布者:

四、发布、订阅认证

以上使用的是mqtt-tcp方式,默认是没有进行加密的,任何人都可以进行订阅和发布,现在进行限制,使用账号密码模式进行限制发布和订阅者

4.1 修改配置文件

        打开config下面配置文件

        修改2个参数,注意文件 nanomq_pwd.conf路径改为上面config下对应文件的绝对路径

4.2 修改账号文件参数

        默认打开nanomq_pwd.cong 有以下两个账号,前面是账号后面是密码,可以进行添加,注意格式保持一致,通过‘:’进行分隔

4.3 重启NanoMQ即可

        重新启动

nanomq start --conf C:\Users\Administrator\Desktop\fsdownload\nanomq-0.21.5-windows-x86_64\config\nanomq.conf

4.4 发布者、订阅者重新连接

        不使用账号密码进行连接就链接不上来,如下

1、订阅者进行连接

nanomq_cli sub --url mqtt-tcp://localhost:1883 -u admin -P public -t nmqtest

2、发布者进行连接

nanomq_cli pub --url mqtt-tcp://localhost:1883 -t nmqtest -u admin -P public -m HelloWorld777777777

3、订阅者接收到消息

五、MQTTX图形界面客户端

上面使用的都是NanoMQ自带的cli命令行进行发布订阅,同时也有图形的工具进行MQTT发布订阅。

5.1 下载安装MQTT客户端

官方下载链接:MQTTX 下载

下载完成直接安装即可

5.2 客户端连接MQTT服务器

1、打开MQTTX,点击+号或者连接

2、名称随便,客户端ID随便。协议选择mqtt://,ip输入对应的ip地址,本地输入127.0.0.1即可,端口默认mqtt是1883,加了认证所以需要刚才的账号密码

5.3 发布者发送消息

在下方输入框输入文字消息直接发送,注意发送的主题。

订阅者受到消息

5.4 订阅者订阅消息

同时mqttx也有订阅者功能

配置对应的主题即可

发送消息同时也接收到消息

### Nanomq 和 DDS 的相关信息及集成方式 #### 1. **Nanomq 简介** Nanomq 是一种轻量级的消息中间件,基于 MQTT 协议设计,专注于物联网设备之间的高效通信。它具有低资源消耗的特点,适合运行在嵌入式设备上。Nanomq 提供了高吞吐量和低延迟的特性,使其成为边缘计算场景的理想选择。 #### 2. **DDS 简介** DDS(Data Distribution Service)是一种面向实时系统的数据分发服务标准[^1]。其核心特点是点对点对等通信架构,消除了传统消息代理带来的额外开销。这种设计不仅减少了通信延迟,还提升了系统的可扩展性和可靠性。DDS 非常适用于需要高性能、可靠性的物联网应用场景。 #### 3. **Nanomq 和 DDS 的比较** | 特性 | Nanomq | DDS | |--------------------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| | **协议支持** | 基于 MQTT | 支持多种传输协议(如 RTPS),并提供灵活的数据建模能力 | | **适用场景** | 边缘计算、小型 IoT 设备 | 实时控制系统、工业自动化、航空航天等领域 | | **通信模式** | 客户端-服务器模式 | 对等通信模式 | | **性能优化** | 轻量化设计,适合资源受限环境 | 高性能、低延迟,适合大规模分布式系统 | | **开发复杂度** | 使用简单,易于配置 | 需要构建数据模型并理解以数据为中心的设计原则 | #### 4. **Nanomq 和 DDS 的集成方式** 为了实现 Nanomq 和 DDS 的集成,可以考虑以下几种方法: - **桥接器模式**: 构建一个桥接组件,该组件能够同时处理 MQTT 和 DDS 消息。通过这种方式,可以让两种协议无缝协作。例如,当一条消息到达 Nanomq 后,可以通过桥接器将其转换为 DDS 可识别的格式并发送给目标节点。 - **网关模式**: 创建一个专门的网关程序,在其中完成不同协议间的映射工作。此方案通常用于异构网络环境中,确保各子系统间的信息互通无阻。 以下是简单的代码示例展示如何创建一个基本的桥接逻辑: ```python import paho.mqtt.client as mqtt from dds import Participant, Topic, DataWriter def on_mqtt_message(client, userdata, msg): # 将收到的MQTT消息写入DDS主题 writer.write(msg.payload.decode('utf-8')) mqtt_client = mqtt.Client() dds_participant = Participant() topic = Topic(dds_participant, 'MessageTopic', str) writer = DataWriter(topic) mqtt_client.connect("localhost", 1883, 60) mqtt_client.subscribe("test/topic") mqtt_client.on_message = on_mqtt_message mqtt_client.loop_forever() ``` 上述脚本展示了如何监听来自 MQTT 主题的消息并将它们转发至 DDS 中的一个特定主题下。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值