在 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

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
27天前
|
Shell Windows
Windows服务器 开机自启动服务
Windows服务器 开机自启动服务
14 0
|
4天前
|
安全 Unix Linux
Windows如何远程连接服务器?服务器远程连接图文教程
服务器操作系统可以实现对计算机硬件与软件的直接控制和管理协调,任何计算机的运行离不开操作系统,服务器也一样,服务器操作系统主要分为四大流派:Windows Server、Netware、Unix和Linux。今天驰网飞飞将和你分享Windows server远程连接图文教程,希望可以帮助到你
19 4
Windows如何远程连接服务器?服务器远程连接图文教程
|
12天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务
|
17天前
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
162 0
|
1月前
|
Linux 数据安全/隐私保护 Docker
linux和windows中安装emqx消息服务器
linux和windows中安装emqx消息服务器
36 0
|
1月前
|
存储 Windows
windows server 2019 云服务器看不见硬盘的解决方案
windows server 2019 云服务器看不见硬盘的解决方案
|
1月前
|
数据安全/隐私保护 Windows
Windows Server 各版本搭建终端服务器实现远程访问(03~19)
左下角开始➡管理工具➡管理您的服务器,点击添加或删除角色点击下一步勾选自定义,点击下一步蒂埃涅吉终端服务器,点击下一步点击确定重新登录后点击确定点击开始➡管理工具➡计算机管理,展开本地用户和组,点击组可以发现有个组关门用来远程登录右键这个组点击属性,点击添加输入要添加的用户名,点击确定添加成功后点击确定打开另一台虚拟机(前提是在同一个局域网内),按 WIN + R 输入 mstsc 后回车输入 IP 地址后点击连接输入用户名及密码后点击确定连接成功!
33 0
|
30天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
417 4
|
1月前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程