NanoMQ MQTT Broker (NanoMQ) 是一个全方位的边缘消息传递平台,包括一个用于 IoT/IIoT 的超快 MQTT Broker 和一个用于 SDV 的轻量级消息传递总线。是面向物联网边缘计算场景的下一代轻量级高性能MQTT消息服务器。

NanoMQ与NNG深度合作,NanoMQ基于NNG异步 IO 和多线程模型面向MQTT协议深度优化后诞生。依靠NNG出色的网络 API 设计,NanoMQ自身可以专注于 MQTT 服务器性能和更多的拓展功能。目标为边缘设备和 MEC 提供更好的 SMP 支持和极高的性能性价比。
完整支持 MQTT 5.0:完整支持 MQTT 5.0/3.1.1,与所有标准 MQTT 开源 SDK 兼容。
本指南将以 Docker 部署为例,演示如何快速上手 NanoMQ。
运行以下命令快速通过 Docker 运行 NanoMQ,分别指定端口 1883、8083 和 8883 用于监听 MQTT、MQTT over WebSockets 和 MQTT over SSL/TLS 流量。
docker run -d --name nanomq -p 1883:1883 -p 8083:8083 -p 8883:8883 emqx/nanomq:latest
安装客户端
composer require workerman/mqtt
订阅主题 subscribe.php
<?php
/**
* @desc subscribe.php
* @author Tinywan(ShaoBo Wan)
*/
declare(strict_types=1);
useWorkerman\Worker;
require_once__DIR__ . '/../../vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://127.0.0.1:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('tinywan');
};
$mqtt->onMessage = function($topic, $content){
echo"订阅主题: {$topic}\n";
echo"消息内容: {$content}\n";
};
$mqtt->connect();
};
Worker::runAll();
命令行运行php subscribe.php start启动。
执行发布消息,命令行区域将出现一条消息,表明该消息已成功发布到
NanoMQ并被转发到订阅主题。

publish.php<?php
/**
* @desc publish.php
* @author Tinywan(ShaoBo Wan)
*/
declare(strict_types=1);
useWorkerman\Worker;
require_once__DIR__ . '/../../vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function () {
$mqtt = new Workerman\Mqtt\Client('mqtt://127.0.0.1:1883');
$mqtt->onConnect = function ($mqtt) {
$mqtt->publish('tinywan', 'Hi!开源技术小栈 NanoMQ');
};
$mqtt->connect();
};
Worker::runAll();
命令行运行php publish.php start启动。
IoT 时代数据是第一生产力,而边缘则是数据诞生的地方。在边缘复杂的网络环境中对数据进行快速汇聚分发,一个高实时、高吞吐的边缘消息总线至关重要。然而由于产业链条长和各垂直行业的历史原因,使得边缘存在协议碎片化和多种消息模式,而且嵌入式环境的算力和功耗也有严格限制。
这些问题都对边缘消息总线提出了新的要求与挑战。NanoMQ致力于解决这些问题,提供一个能够在边缘端统一数据流动的轻量级高性能消息总线。同时提供极佳的拓展性和可移植性,适配各类嵌入式平台。让分散在边缘的碎片数据能够被轻松管理和获取。