EMQ (Erlang MQTT Broker) is a distributed, massively scalable, highly extensible MQTT message broker written in Erlang/OTP.
EMQ is fully open source and licensed under the Apache Version 2.0. EMQ implements both MQTT V3.1 and V3.1.1 protocol specifications, and supports MQTT-SN, CoAP, WebSocket, STOMP and SockJS at the same time.
EMQ provides a scalable, reliable, enterprise-grade MQTT message Hub for IoT, M2M, Smart Hardware and Mobile Messaging Applications.
The 1.0 release of the EMQ broker has scaled to 1.3 million concurrent MQTT connections on a 12 Core, 32G CentOS server.
- Full MQTT V3.1/V3.1.1 support
- QoS0, QoS1, QoS2 Publish/Subscribe
- Session Management and Offline Messages
- Retained Message
- Last Will Message
- TCP/SSL Connection
- MQTT Over WebSocket(SSL)
- HTTP Publish API
- MQTT-SN Protocol
- STOMP protocol
- STOMP over SockJS
- $SYS/# Topics
- ClientID Authentication
- IpAddress Authentication
- Username and Password Authentication
- Access control based on IpAddress, ClientID, Username
- LDAP Authentication/ACL
- HTTP Authentication/ACL
- MySQL Authentication/ACL
- Redis Authentication/ACL
- PostgreSQL Authentication/ACL
- MongoDB Authentication/ACL
- Cluster brokers on several nodes
- Bridge brokers locally or remotely
- mosquitto, RSMB bridge
- Extensible architecture with Hooks and Plugins
- Passed eclipse paho interoperability tests
- Local Subscription
- Shared Subscription
The EMQ broker is cross-platform, which can be deployed on Linux, Unix, Mac, Windows and even Raspberry Pi.
Download the binary package for your platform from http://emqtt.io/downloads.
Build From Source
The EMQ broker requires Erlang/OTP R18+ to build.
git clone https://github.com/emqtt/emq-relx.git cd emq-relx && make cd _rel/emqttd && ./bin/emqttd console
The EMQ broker is highly extensible, with many hooks and plugins for customizing the authentication/ACL and integrating with other systems:
|emq_plugin_template||Plugin template and demo|
|emq_auth_username||Username/Password Authentication Plugin|
|emq_auth_clientid||ClientId Authentication Plugin|
|emq_auth_mysql||MySQL Authentication/ACL Plugin|
|emq_auth_pgsql||PostgreSQL Authentication/ACL Plugin|
|emq_auth_redis||Redis Authentication/ACL Plugin|
|emq_auth_mongo||MongoDB Authentication/ACL Plugin|
|emq_auth_http||Authentication/ACL by HTTP API|
|emq_auth_ldap||LDAP Authentication Plugin|
|emq_mod_retainer||Store MQTT Retained Messages|
|emq_mod_subscription||Subscribe topics when client connected|
|emq_sn||MQTT-SN Protocol Plugin|
|emq_coap||CoAP Protocol Plugin|
|emq_stomp||Stomp Protocol Plugin|
- Twitter: @emqtt
- Homepage: http://emqtt.io
- Downloads: http://emqtt.io/downloads
- Documentation: http://emqtt.io/docs/v2/
- Forum: https://groups.google.com/d/forum/emqtt
- Mailing List: email@example.com
- Issues: https://github.com/emqtt/emqttd/issues
- QQ Group: 12222225
QingCloud is the world’s first IaaS provider that can deliver any number of IT resources in seconds and adopts a second-based billing system. QingCloud is committed to providing a reliable, secure, on-demand and real-time IT resource platform with excellent performance, which includes all components of a complete IT infrastructure system: computing, storage, networking and security.
The q.emqtt.com hosts a public Four-Node EMQ cluster on QingCloud:
Apache License Version 2.0