MCPSERV.CLUB
EMQX

EMQX

Self-Hosted

Scalable, secure MQTT platform for real‑time IoT data

Active(100)
15.4kstars
0views
Updated 12 hours ago

Overview

Discover what makes EMQX powerful

EMQX is a high‑performance, enterprise‑grade MQTT broker that has evolved into a unified platform supporting MQTT 5.0/3.x, MQTT‑SN, CoAP, LwM2M, and even MQTT over QUIC. From a developer’s perspective it is essentially a distributed message hub that can ingest, transform, and forward millions of IoT events with sub‑millisecond latency. The core engine is written in Erlang/OTP, giving it native fault tolerance and hot‑code swapping; the broker exposes a rich REST/GraphQL API, a WebSocket interface for browser clients, and a flexible rule engine that lets you write SQL‑style filters and actions. This combination of low‑level protocol handling and high‑level data processing makes EMQX a compelling choice for real‑time analytics, AI pipelines, and edge‑to‑cloud data orchestration.

Runtime

Cluster

Storage

Plugins & Gateways

Overview

EMQX is a high‑performance, enterprise‑grade MQTT broker that has evolved into a unified platform supporting MQTT 5.0/3.x, MQTT‑SN, CoAP, LwM2M, and even MQTT over QUIC. From a developer’s perspective it is essentially a distributed message hub that can ingest, transform, and forward millions of IoT events with sub‑millisecond latency. The core engine is written in Erlang/OTP, giving it native fault tolerance and hot‑code swapping; the broker exposes a rich REST/GraphQL API, a WebSocket interface for browser clients, and a flexible rule engine that lets you write SQL‑style filters and actions. This combination of low‑level protocol handling and high‑level data processing makes EMQX a compelling choice for real‑time analytics, AI pipelines, and edge‑to‑cloud data orchestration.

Architecture

  • Runtime – Erlang/OTP runs the broker cluster, leveraging actor‑based concurrency and hot code reload. Each node is a lightweight Erlang VM that can be started as a Docker container or on bare metal.
  • Cluster – Masterless clustering uses the Erlang distribution protocol; nodes discover each other via gossip or Kubernetes services. The cluster is horizontally scalable and automatically balances client connections.
  • Storage – EMQX stores session metadata in an embedded key‑value store (Mnesia) and can persist retained messages to external databases such as PostgreSQL or Redis. For time‑series data it offers EMQX Tables, a columnar store optimized for IoT workloads.
  • Plugins & Gateways – A plug‑in framework written in Erlang allows developers to add custom authentication, authorization, or protocol gateways (CoAP, MQTT‑SN). Gateways are standalone services that translate protocols into native MQTT before forwarding to the broker.

Core Capabilities

  • Protocol Flexibility – Full support for MQTT 5.0, including topic aliasing, shared subscriptions, and enhanced QoS. QUIC support gives a TLS‑over‑UDP path that reduces connection latency.
  • Rule Engine – An SQL‑based engine lets you write SELECT statements that match topics, filter payloads, and trigger actions such as HTTP callbacks, database writes, or Kafka publishes.
  • Data Integration – Built‑in bridges to popular queues (Kafka, RabbitMQ) and cloud services (AWS SQS, Azure Event Hubs). Developers can also write custom bridges in Go or Python using the EMQX SDK.
  • Security – Mutual TLS, SASL/PLAIN authentication, JWT support, and fine‑grained ACLs. The broker can integrate with external LDAP/Active Directory via a plugin.

Deployment & Infrastructure

EMQX is container‑first: official Docker images are available for all major platforms, and Helm charts simplify Kubernetes deployments. A single node can run on a 2‑core VM for prototyping, while production clusters scale to thousands of nodes across regions. The masterless design eliminates single‑point failures, and the cluster linking feature allows global distribution of topics with automatic failover. For high‑throughput scenarios, the broker can be tuned to use epmd for node discovery and Erlang's ETS tables for in‑memory state, yielding millions of messages per second.

Integration & Extensibility

  • Plugin API – Exposes a clean Erlang module interface; developers can ship binary plugins or use the EMQX SDK to write plugins in Go, Rust, or Python.
  • Webhooks & Callbacks – The rule engine can invoke HTTP/HTTPS endpoints, WebSocket streams, or custom functions. This is ideal for real‑time dashboards or AI inference services.
  • SDKs – Official client libraries in Java, Python, Go, Node.js, and C++ cover both MQTT and WebSocket transports. The SDKs include automatic reconnection logic and QoS handling.
  • Custom Topics & Namespaces – Developers can create hierarchical topic namespaces and attach metadata to topics, enabling multi‑tenant isolation within a single cluster.

Developer Experience

The documentation is comprehensive and organized around Getting Started, Configuration, API Reference, and Developer Guides. The community is active on Slack, Discord, and GitHub Discussions. The Business Source License (BSL 1.1) allows free use for open‑source projects while providing a clear upgrade path to enterprise features. The configuration is declarative, using environment variables or YAML files; most settings are hot‑reloadable thanks to Erlang’s runtime.

Use Cases

  • Industrial IoT – Connect millions of sensors to a single cluster, use the rule engine to filter fault events, and stream alerts to an OPC‑UA gateway.
  • Connected Vehicles – Low‑latency telemetry from 20M+ vehicles, with QUIC reducing handshake overhead and enabling real‑time route optimization.
  • Smart Cities – CoAP gateways ingesting traffic sensors, then pushing data to Kafka for downstream analytics.
  • AI‑Driven Analytics – Real‑time sensor streams feed into an LLM via the Flow Designer, enabling instant anomaly detection and predictive maintenance.

Advantages

  • Performance – Erlang’s concurrency model delivers sub‑millisecond latency even at 100M concurrent connections.
  • Scalability – Masterless clustering and global linking allow horizontal scaling without manual reconfiguration.
  • Protocol Breadth – Native support for MQTT 5.0, QUIC, CoAP, LwM2M, and more reduces the need for separate protocol adapters.
  • Extensibility – A

Open SourceReady to get started?

Join the community and start self-hosting EMQX today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
cloud-platforms
License
NOASSERTION
Stars
15.4k
Technical Specs
Pricing
Open Source
Database
Multiple
Docker
Official
Min RAM
1GB
Min Storage
5GB
Supported OS
LinuxDocker
Author
emqx
emqx
Last Updated
12 hours ago