What is emqttd?

emqttd is a massively scalable and clusterable MQTT V3.1/V3.1.1 broker written in Erlang/OTP.
emqttd supports both MQTT V3.1/V3.1.1 protocol specification with extended features.


emqttd is aimed to provide a solid, enterprise grade, extensible open-source MQTT broker for IoT(M2M) applications that need to support ten millions of concurrent MQTT clients.

  • Easy to install

  • Massively scalable

  • Easy to extend

  • Solid stable

You can find more info at emqtt.io


Let’s Start
To build emqttd I’m using an old Mac Mini (Late 2009) running Mac OS X Yosemite (10.10.3).

Step 0 – Prepare your Mac
First of all you have to install the Apple Developer Tools. If you are reading this post, I think they are already installed onto your Mac.
Install the git command line client

Step 1 – Install erlang.
You have to install erlang, make sure to install the version from rudix.org (http://rudix.org/packages/erlang.html)

If you have installed the version from “Erlang Solutions” (24th June 2015) you could face to the following compilation error:
{‘EXIT’,{{badmatch,{error,”goldrush: Application version clash. Multiple directories contain version \”0.1.6\”.”}}

Step 2 – Getting the source code
Download the source code for emqttd
$ mkdir emqtt
$ cd emqtt
$ git clone https://github.com/emqtt/emqttd.git

Step 3 – Build
$ cd emqttd
$ make
$ make dist

Step 4 – Finding emqttd
Where are your files? The “make dist” command creates a complete set of directory inside the rel directory. So cd into rel/emqttd
$ cd rel/emqttd
$ ls
bin data erts-6.3 etc lib log plugins releases
Step 5 – Run emqttd
$ ./bin/emqttd console
starting emqttd on node 'emqttd@'
emqttd trace is starting...[done]
emqttd pooler is starting...[done]
emqttd client manager is starting...[done]
emqttd session manager is starting...[done]
emqttd session supervisor is starting...[done]
emqttd pubsub is starting...[done]
emqttd stats is starting...[done]
emqttd metrics is starting...[done]
emqttd broker is starting...[done]
emqttd mode supervisor is starting...[done]
emqttd bridge supervisor is starting...[done]
emqttd access control is starting...[done]
emqttd system monitor is starting...[done]
07:59:30.235 [info] load module presence successfully
07:59:30.235 [info] load module autosub successfully
07:59:30.276 [info] mqtt listen on with 16 acceptors.
07:59:30.278 [info] mqtts listen on with 4 acceptors.
07:59:30.285 [info] http listen on with 4 acceptors.
Erlang MQTT Broker 0.8.5-beta-4-gafa0c18 is running now
Eshell V6.3 (abort with ^G)

Now you have only to try your brand new broker.