在 Windows 平台搭建 MQTT 服务

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
注册配置 MSE Nacos/ZooKeeper,182元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: NanoMQ 有着强大的跨平台和可兼容能力,不仅可以用于以 Linux 为基础的各类平台,也为 Windows 平台提供了 MQTT 服务的新选择。

引言

MQTT 是一种轻量级、基于发布/订阅模式的消息传输协议,旨在用极小的代码空间和网络带宽为物联网设备提供简单、可靠的消息传递服务。MQTT 经过多年的发展,如今已被广泛应用于资源开采、工业制造、移动通信、智能汽车等各行各业,使得 MQTT 成为了物联网传输协议的事实标准。

出于稳定性、可靠性、成本等多方面的考虑,众多 MQTT 服务实现更倾向于选择拥有丰富开源生态系统的 Linux 环境,Windows 平台上可选的 MQTT 服务相对有限。NanoMQ 是用于物联网边缘的超轻量级 MQTT 消息服务器,具有极高的性能性价比,适用于各类边缘计算平台。NanoMQ 有着强大的跨平台和可兼容能力,不仅可以用于以 Linux 为基础的各类平台,也为 Windows 平台提供了 MQTT 服务的新选择。

本文将以 NanoMQ 为例,使用二进制包和源代码编译两种方式演示如何在 Windows 平台中快速搭建 MQTT 服务。

NanoMQ 简介

NanoMQ 是 EMQ 于 2021 年发布的开源项目,旨在为物联网边缘场景提供轻量级、快速、支持多线程的 MQTT 消息服务器和消息总线。NanoMQ 基于 NNG 的异步 I/O 构建,内置 Actor 多线程模型。相较于 Mosquitto 的单线程设计,NanoMQ 能够充分发挥现代 SMP 系统的多核优势,在边缘多核环境中展现出了比 Mosquitto 高达 10 倍的性能表现。NanoMQ 基于标准 POSIX 接口开发,可以轻松通过 MinGW 的 POSIX 编译环境移植到各类 Windows 环境中。经过三年研发迭代,NanoMQ 于 2024 年 1 月正式加入 LF Edge 基金会,未来将与 LF Edge 旗下的 EdgeX Foundry 框架深度集成,共同促进物联网边缘设备和应用之间的互操作性。

NanoMQ

NanoMQ 主要具有以下特性:

  • 超轻量化:安装包约 200KB 左右,运行占用资源极小。根据编译和启动的配置,启动所需内存资源从300Kb 到 3Mb 不等。
  • 兼容性和可移植性:NanoMQ 采用纯净的 C/C++ 开发,只依赖于标准 POSIX API,同时支持大小端兼容,可无缝对接各类网络应用,零成本迁移到各类嵌入式平台。
  • 可伸缩性:借助内置的异步 IO 架构和多线程模型,NanoMQ 在保持轻量化的同时仍具备一定可横向拓展的并发吞吐能力。仅需不到 10MB 的内存消耗,即可支持超过 10W 的消息吞吐。
  • SMP 支持:NanoMQ 在边缘多核平台上对 SMP 有着良好的支持,能够充分发挥多处理器的能力,从而提升系统性能。
  • 容器支持:NanoMQ 能够轻松地通过容器进行部署和运行,并且与主流的边缘容器编排方案兼容,使得部署过程更加灵活和便捷。

二进制包安装

首先进入 NanoMQ 官网下载页面,选择 Windows 平台下载安装包:

下载 NanoMQ

可以在解压后文件夹中的bin目录下用 Windows 命令行使用 NanoMQ。将解压后的C:\xxx\nanomq-0.21.10-windows-x86_64\bin 目录添加到环境变量中,则可以在 Windows 命令行或者 PowerShell 中直接使用 NanoMQ。输入 nanomq --help 可以看到简要的使用说明。

NanoMQ 命令

使用 nanomq start --conf C:\nanomq\config\nanomq.conf 启动 NanoMQ。其中C:\nanomq\config\nanomq.conf 为 NanoMQ 配置文件的地址,配置文件示例可以在解压后文件夹中的config 目录下找到。NanoMQ 的详细配置说明请参见官方文档

接下来使用 NanoMQ 的 MQTT 客户端工具 nanomq_cli 来进行 NanoMQ 的使用说明。nanomq_cli 同样可以在 bin 目录下找到。

nanomq_cli

从上图中可以看到 nanomq_cli 的通过 sub 命令订阅了主题 nmqtest,接收到了 nanomq_cli 通过 pub 命令发布的 HelloWorld 消息。

源码编译与运行

在 Windows 平台编译需要提前准备 MinGW-w64MakeCMake

  • MinGW-w64 是将 GCC 编译器和 GNU Binutils 移植到 Windows 平台下的产物,包括一系列头文件(Win32API)、库和可执行文件,是一个在 Windows 平台上开发和运行原生 Windows 应用程序的开源软件开发环境。Cygwin 同 MinGW 类似,也用于移植 Unix 软件到 Windows,但它们采用截然不同的实现。Cygwin 重视兼容性优先于性能,MinGW 则着重于简化与性能。本文将以 MinGW 为例进行 NanoMQ 的编译。
  • Make 和 CMake 则是用于 NanoMQ 项目自动化构建的工具。参考下载地址:MingGW-w64MakeCMake。其中 MinGW-w64 应尽量选择较新版本。

接下来在 Windows 命令行、PowerShell 或者 Git Bash 中输入以下命令:

# 1. clone 源码 (已通过ZIP下载源代码则不需要这一步)
PS: D:\Project> git clone https://github.com/nanomq/nanomq.git
PS: D:\Project> cd nanomq

# 2. 更新和初始化 git 子模块
PS: D:\Project\nanomq> git submodule update --init --recursive

# 3. 创建并进入 build 目录
PS: D:\Project\nanomq> mkdir build
PS: D:\Project\nanomq> cd build

# 4. 编译 NanoMQ
PS: D:\Project\nanomq\build> cmake -G "MinGW Makefiles" ..
PS: D:\Project\nanomq\build> make -j 8

# 5. 运行 NanoMQ
PS: D:\Project\nanomq\build> .\nanomq\nanomq.exe broker start

除了 NanoMQ 自带的客户端工具,还可以使用开源 MQTT 客户端工具 MQTTX 来进行消息收发测试。

MQTTX

从上图中同样可以看到,订阅了 nmqtest 主题的客户端通过 NanoMQ 收到了另一个客户端发布的 hello 消息。

结语

本文通过二进制包和源码编译的方式完成了 NanoMQ 在 Windows 平台的安装,并对其使用进行了演示测试。NanoMQ 为在 Windows 平台上构建物联网边缘计算应用提供了一个便捷而强大的选择。它的轻量级、高性能以及专注于边缘计算的设计使其成为一个理想的消息传输解决方案。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
1月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
323 116
|
1月前
|
监控 编译器 Windows
Qt5实现Windows平台串口通信
Qt5实现Windows平台串口通信
|
1月前
|
安全 Linux iOS开发
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
326 53
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
1月前
|
Linux API iOS开发
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
189 14
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
2月前
|
安全 Linux API
JEB Pro v5.31 (macOS, Linux, Windows) - 逆向工程平台
JEB Pro v5.31 (macOS, Linux, Windows) - 逆向工程平台
148 0
|
6月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
2444 42
|
3月前
|
Unix Linux 编译器
解决在Windows平台上运行Golang程序时出现的syscall.SIGUSR1未定义错误。
通过这种结构,你的代码既可以在支持 SIGUSR1 信号的系统上正常工作,又可以在不支持这些信号的 Windows 系统上编译通过,确保跨平台的兼容性和功能的完整性。
177 0
|
Unix Linux iOS开发
Splunk Enterprise 10.0.0 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
Splunk Enterprise 10.0.0 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
111 0
|
6月前
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
550 37
|
6月前
|
安全 前端开发 Linux
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台
209 3
Immunity CANVAS Professional 7.27 (macOS, Linux, Windows) - 渗透测试和漏洞利用平台

热门文章

最新文章

相关产品

  • 云消息队列 MQ