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
客户端连接 NanoMQ
安装客户端
订阅主题 subscribe.php
php
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
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致力于解决这些问题,提供一个能够在边缘端统一数据流动的轻量级高性能消息总线。同时提供极佳的拓展性和可移植性,适配各类嵌入式平台。让分散在边缘的碎片数据能够被轻松管理和获取。