explaingit

emqx/emqx

16,270ErlangAudience · ops devopsComplexity · 4/5LicenseSetup · hard

TLDR

An MQTT message broker built to connect millions of IoT devices simultaneously, route their messages in real time, and forward data to databases, queues, and cloud services at massive scale.

Mindmap

mindmap
  root((repo))
    What it does
      MQTT broker
      IoT messaging
      Device routing
    Scale
      100M clients
      Millions per second
      Sub-ms latency
    Integrations
      Kafka and RabbitMQ
      PostgreSQL MySQL
      AWS GCP Azure
    Security
      TLS encryption
      JWT auth
      LDAP support
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build the messaging backbone for an IoT platform connecting thousands of sensors to a database.

USE CASE 2

Route live device data from industrial equipment through transformation rules into Kafka and a time-series database.

USE CASE 3

Run a vehicle telematics system receiving telemetry from millions of connected vehicles in real time.

USE CASE 4

Integrate smart home device data into a cloud pipeline using built-in connectors for AWS, GCP, or Azure.

Tech stack

ErlangMQTTSQLTLSPrometheusGrafana

Getting it running

Difficulty · hard Time to first run · 1h+

Requires configuring external database connectors and understanding MQTT protocol, cluster setup adds significant complexity.

Free to use up to a point, from version 5.9.0 commercial production use beyond certain scale requires a commercial license under the Business Source License 1.1.

In plain English

EMQX is an MQTT broker, software that sits in the middle of large networks of connected devices and routes their messages to the right places. It is aimed at the data infrastructure used in the Internet of Things, industrial IoT, connected vehicles, smart cities, and AI applications that work with live device streams. Underneath, EMQX speaks the MQTT protocol in its 5.0, 3.1.1 and 3.1 versions, and also supports related protocols like MQTT-SN, CoAP, LwM2M and MQTT over QUIC through built-in gateways. A single cluster is designed to connect more than 100 million MQTT clients at once and process millions of messages per second with sub-millisecond latency, using a masterless clustering setup so the system stays up if individual nodes fail. Incoming messages can be filtered, transformed and enriched in flight through an SQL-based Rule Engine, or built visually with a drag-and-drop Flow Designer. From there, data can be forwarded to over fifty external systems, including message queues like Kafka and RabbitMQ, databases like PostgreSQL, MySQL, MongoDB, Redis and InfluxDB, and cloud services like AWS Kinesis, GCP Pub/Sub and Azure Event Hubs. You would reach for EMQX when you need to ingest data from many connected devices at scale and route it reliably into the rest of your stack. It includes TLS/SSL encryption, authentication via JWT, X.509 certificates, LDAP and database lookups, monitoring through Prometheus, Grafana and OpenTelemetry, an HTTP API and a web Dashboard. EMQX is written in Erlang and, from version 5.9.0, is released under the Business Source License 1.1 as a single unified offering.

Copy-paste prompts

Prompt 1
Set up a single-node EMQX broker, connect a simulated IoT device, and forward its MQTT messages to a PostgreSQL database using the Rule Engine, show me the full config.
Prompt 2
How do I configure EMQX to authenticate MQTT clients using JWT tokens and encrypt all connections with TLS?
Prompt 3
Write an EMQX SQL rule that filters incoming sensor readings for values above a threshold and forwards only those to a Kafka topic.
Prompt 4
How do I add a second EMQX node to form a cluster and verify it handles client failover if one node goes down?
Open on GitHub → Explain another repo

← emqx on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.