在 Windows 上搭建 MQTT 消息服务器

简介: 本文将以NanoMQ为例,演示如何通过安装包和源代码编译两种安装方式,在Windows系统中快速搭建一个可以支持多协议连接的物联网MQTT消息服务器。

MQTT 已经是物联网事实上的标准通信协议。在目前市面上提供的各类开源 MQTT 服务器中,最常见的是 Linux 平台为基础,对于 Windows 平台的支持较少,即使支持也存在性能较弱、功能单一、版本兼容性等问题。

然而在工业自动化和建筑智能领域,有许多场景仍然依赖于 Windows 的生态环境。特别是工控上位机仍然大量使用 C# 开发运行在安装 Windows 的工控机中,有的成本敏感场景甚至还在使用 WinCE 操作系统。为了能让这些用户也能在 Windows 上使用到方便易用、轻量小巧、功能齐全的 MQTT 消息服务,超轻量级物联网边缘 MQTT 消息服务器 NanoMQ 依赖其强大的跨平台和可兼容能力,通过 MinGW 的 POSIX 编译环境成功移植到了各类 Windows 环境。

本文将以 NanoMQ 为例,演示如何通过安装包和源代码编译两种安装方式,在 Windows 系统中快速搭建一个可以支持多协议连接的物联网 MQTT 消息服务器。

NanoMQ 简介

NanoMQ 是 EMQ 推出的面向物联网边缘计算场景的超轻量级高性能 MQTT 消息服务器+消息总线(Github 地址: https://github.com/emqx/nanomq),具有超轻量、高吞吐、低延迟、兼容性高和可移植等优点,能够在各类操作系统和 CPU 架构上部署。

图片1.png
目前 NanoMQ 具有的功能有:

  • 完整支持MQTT 3.1.1/5.0
  • 嵌入式规则引擎,支持消息的实时处理和持久化。
  • 支持云端桥接,并可以进行消息离线缓存和自动重传。
  • 提供丰富的 HTTP REST APIs,方便云边协同和远程运维监控。
  • 多协议支持 :MQTT over WebSocket, ZeroMQ 和 nanomsg 等。
  • 支持第三方 HTTP 认证和 WebHook 集成方式。

安装包安装

第一种方法我们将直接使用二进制安装包进行安装。

下载安装包

首先进入 NanoMQ 官网下载页面:https://nanomq.io/zh/downloads,并选择 Windows 平台下载安装包:

图片2.png

从 NanoMQ 官网下载 Windows 发布包

目前最新的 NanoMQ Windows Release 版本是 0.10.5。

安装包安装

下载会得到一个 msi 格式的安装包,双击进行安装。

NanoMQ 安装包

下载的安装包

选择安装路径和所需安装的功能,安装包也包含了 NanoSDK 的库文件:

图片三.png

安装完成后程序自动退出。

测试和启动 NanoMQ 服务

目前 NanoMQ 还不包含可视化界面,所以需要通过命令行或者服务启动,启动方式如下:

打开命令行窗口或者 PowerShell,输入 nanomq 可以看到:

图片4.png

检查命令是否能够正常使用

说明系统已经成功安装了 NanoMQ,可以通过输入 --help 了解具体有哪些命令选项。

启动的话可以使用 nanomq start --conf C:\nanomq\config\nanomq.conf 配置文件指定的路径请根据第二步的安装选择的路径找到对应的配置文件,简单的配置选项有:

## url
## Connect with the host and port
## 监听的端口和IP地址
## Value: nmq-tcp://host:port
url=nmq-tcp://localhost:1883

## num_taskq_thread
## Use a specified number of taskq threads 
## 线程数,建议设置成和CPU核数相同
## Value: 1-255
num_taskq_thread=4

## max_taskq_thread
## Use a specified maximunm number of taskq threads
## 线程数,建议设置成和CPU核数相同
## Value: 1-255
max_taskq_thread=4

## msq_len
## The queue length in-flight window
## This is essential for performance and memory consumption
## 飞行窗口长度大小,影响broker最大内存占用
## Value: 1-infinity
msq_len=256

在 Windows 平台,监听的 URL 需要设置成 nmq-tcp://localhost:1883 。除了 nanomq.conf 配置文件外,其他功能的具体配置方法可以参考 NanoMQ的文档页面

测试 NanoMQ 服务是否正常运行,可以使用 NanoMQ 自带的客户端工具直接测试:

图片5.png

通过 NanoMQ 的 Pub/Sub 命令,可以看到已经可以正常收发消息,Sub 客户端可以收到 Pub 客户端发的 Hello 消息。

源码编译及运行

第二种方法是通过源代码进行编译安装,这种方法允许我们在 Windows 上对 NanoMQ 进行二次开发并增加自己需要的功能。

目前 NanoMQ 在 Windows 下的编译需要 MinGW-w64MakeCMake

源码准备

首先需要从 NanoMQ 源代码仓库下载源代码,注意 NanoMQ 内部包含一个子模块 NNG。

NanoMQ 源码仓库: https://github.com/emqx/nanomq

下载链接:https://github.com/emqx/nanomq/archive/refs/heads/master.zip

NanoNNG 源码仓库:https://github.com/nanomq/NanoNNG/tree/main

下载链接:https://github.com/nanomq/NanoNNG/archive/refs/heads/main.zip

NNG 的源代码需要放置在 nanomq 的 nng 目录下,准备好源代码后就可以开始编译。

编译安装 NanoMQ

命令行编译

以下命令在 Windows PowerShell 或 Git bash 中运行.
# 1. clone 源码 (已通过ZIP下载源代码则不需要这一步)
PS: D:\Project> git clone https://github.com/emqx/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

Visual Studio Code 中编译

需提前安装 VS Code 的 C/C++ 和 CMake 相关插件

图片6.png

图片7.png

图片8.png

  1. 点击选择编译工具链;
  2. 选择 GCC 8.1.0 i686-w64-mingw32 (可能根据你所安装的 MinGW 版本不同而有所不同);
  3. 点击 build 开始编译 NanoMQ。

图片9.png

运行测试

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

MQTT X 下载地址:https://www.emqx.com/zh/try?product=MQTTX

图片10.png

从 MQTTX 可以看到消息能够通过 NanoMQ 进行正常收发。

结语

至此,我们已经成功在 Windows 平台搭建了完整的 MQTT Broker,为广大 Windows 生态用户和其他无法使用 Linux 环境的场景提供了一个轻量且性能强大功能齐全的 MQTT 消息服务器。后续我们还将进一步介绍如何在 Windows 上使用 NanoMQ 的规则引擎和 WebHook 等更多高级功能。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/install-mqtt-broker-on-windows

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
SQL Apache Windows
Windows服务器80端口被占用的全面解决方案
在服务管理器中启动apache2服务,即可正常使用80端口。若系统中还安装了其他微软产品如sql等,也可尝试停止其服务进行测试,但请注意,SQL通常不会使用80端口,因此一般不会受到影响。以上就是关于80端口被system占用的详细解决方法,希望对你有所帮助。
|
5月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
2046 42
|
3月前
|
Windows
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
128 2
|
5月前
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
446 37
|
3月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
367 0
|
4月前
|
Windows
Windows下版本控制器(SVN)-启动服务器端程序
Windows下版本控制器(SVN)-启动服务器端程序
135 4
|
5月前
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
3月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
1月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
139 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
12月前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
796 107

热门文章

最新文章