// the find
mqttsnet/thinglinks
Enterprise-grade IoT platform powered by ThingLinks Engine. Supports MQTT / HTTP / CoAP / TCP / Modbus, rule engine, Visual display screen & multi-tenancy. Millions of connections per node.
ThingLinks is a Java/Spring Cloud microservices IoT platform targeting enterprises that need to connect large numbers of devices over MQTT, CoAP, Modbus, and similar protocols. It bundles device management, a rule engine, SCADA dashboards, multi-tenancy, and TDengine for time-series storage into one deployable stack. The target user is an IoT platform team that wants a pre-integrated foundation rather than wiring these pieces together from scratch.
The BifroMQ integration is a real differentiator — delegating the MQTT broker to Apache BifroMQ means the connection-layer scaling story is credible rather than hand-wavy. The plugin architecture for custom protocols is properly separated (auth, event collector, resource throttler each get their own plugin module), which means you can extend without forking core. TDengine's one-table-per-device model is the right call for IoT time-series — avoids the cardinality disasters you get with generic TSDB setups. The multi-language README coverage (EN/ZH/JA/KO) and screenshot set are thorough, which matters when evaluating whether a project is actively maintained.
The commercial license terms are buried in a way that will surprise people: the Apache 2.0 badge is technically accurate but the LICENSE-COMMERCIAL file prohibits modifying package names or groupIds in the community edition, which is unusual and could create friction for anyone white-labeling or repackaging. The core utility library (thinglinks-util) is distributed as a JAR only in the community edition — no source — so if you hit a bug in it, you're stuck waiting for a fix or upgrading to a paid tier. The deployment prerequisites (MySQL, Redis, TDengine, Nacos, Kafka, Seata, Sentinel) are substantial; calling docker-compose up -d a 'quick start' undersells how much infrastructure you're committing to before writing a single line of device code. Documentation lives behind a website link rather than in the repo, which is a support risk if the site goes down or the project goes quiet.