ElinkMQ · 自研消息服务
百万级并发、毫秒级转发、内置规则引擎与 ACL,可作为 SaaS 使用,也可一键私有化。
1.2M
单节点并发连接
12ms
P99 转发延迟
100K/s
单节点吞吐 (QoS1)
v5.0
MQTT 协议版本
主题规范 / TOPIC SPEC
清晰、稳定、可扩展
topic tree
elink/{device_id}/
├─ cmd/set # cloud → device
├─ cmd/get # request shadow
├─ shadow/update # device → cloud
├─ shadow/delta # diff to apply
├─ event/online # LWT-driven
├─ event/alarm # urgent push
├─ ota/notify
└─ log/{level}LIVE FEED
elink/sw-204/shadow/update {"ch":1,"power":"on"} QoS 1
elink/light-77/cmd/set {"bri":80,"cct":4500} QoS 1
elink/outlet-12/event/online {"v":"1.4.2"} QoS 0
elink/sensor-3a/shadow/update {"t":24.6,"h":52} QoS 0
elink/gw-009/event/alarm {"code":42,"sev":2} QoS 2
elink/sw-018/cmd/get {} QoS 1
elink/light-cc/shadow/update {"power":"off"} QoS 1
部署 / DEPLOY
一行命令起一个集群
docker-compose.yml
# docker-compose.yml
version: "3.8"
services:
elinkmq:
image: elinksmart/mq:4.2
ports:
- "1883:1883" # MQTT
- "8883:8883" # MQTTS
- "8083:8083" # WSS
environment:
ELINK_CLUSTER_PEERS: "node-1,node-2"
ELINK_AUTH: "jwt"
ELINK_RULES: "/etc/elinkmq/rules.sql"
volumes:
- ./data:/var/lib/elinkmq// rules.sql — rule engine
-- forward all alarms to webhook
CREATE RULE alarm_to_webhook
SELECT
payload.code AS code,
payload.msg AS msg,
topic AS src
FROM "elink/+/event/alarm"
WHERE payload.severity >= 3
DO
webhook("https://ops.acme.io/hook"),
influxdb("alarms");
-- offline → SMS
CREATE RULE offline_alert
SELECT client_id FROM "$SYS/+/disconnected"
DO sms("+86138...");