NanoMQ官方介绍:
NanoMQ的docker 占8.29MB, 比其它笨重的MQ轻巧很多 。配置和使用都很简单。
docker run -d --name nanomq \ -p 1883:1883 \ -p 8083:8083 \ -p 8883:8883 \ emqx/nanomq:latest
端口用途说明:
端口 | 协议 | 用途 |
1883 | MQTT | 标准MQTT协议端口 |
8083 | WS-MQTT | WebSocket MQTT端口 |
8883 | MQTTS | TLS加密MQTT端口 |
自定义配置
docker run -d -p 1883:1883 \
-v /path/to/nanomq.conf:/etc/nanomq.conf \
--name nanomq emqx/nanomq:latest
nanomq.conf:
system.num_taskq_thread = 4 # 等于CPU核心数 system.max_taskq_thread = 4 # 等于CPU核心数 system.parallel = 8 # CPU核心数的两倍 mqtt.session.msq_len = 65535 # 最大消息队列长度 log.to = "file|console" # 同时输出到文件和终端 log.level = "info" # 生产环境建议info级别 log.rotation_size = "100MB" # 单个日志文件大小 log.rotation_count = 10 # 保留日志文件数量
npm install mqtt
const mqtt = require('mqtt');
// 创建 MQTT 客户端并连接到代理
const client = mqtt.connect('mqtt:50satoshis.com');
// 连接成功事件
client.on('connect', () => {
console.log('Connected to MQTT broker');
// 订阅主题
client.subscribe('test/topic', (err) => {
if (!err) {
console.log('Subscribed to topic: test/topic');
} else {
console.error('Subscription error:', err);
}
});
// 发布消息
client.publish('test/topic', 'Hello from Node.js!');
});
// 接收消息事件
client.on('message', (topic, message) => {
console.log(`订阅主题: ${topic}`);
console.log(`消息内容: ${message.toString()}`);
});
// 错误处理
client.on('error', (err) => {
console.error('MQTT error:', err);
});
// 断开连接处理
client.on('close', () => {
console.log('Connection closed');
});
// 保持进程运行(无需 Worker 机制)
console.log('MQTT subscriber running. Press Ctrl+C to exit.');