Go to file
Feng Lee 2f1c5c3948 -mnesia dir 2015-04-24 12:46:22 +08:00
apps fix duplicated session 2015-04-24 00:55:56 +08:00
data mqtt 3.1.1 protocol 2015-01-08 14:25:38 +08:00
deps 0.2 project structure 2014-12-06 19:12:29 +08:00
doc websocket 2015-04-23 21:01:11 +08:00
plugins demo plugin 2015-04-20 04:49:27 +08:00
rel -mnesia dir 2015-04-24 12:46:22 +08:00
scripts 0.3.0 changes 2015-01-18 12:57:33 +08:00
tests add tests 2015-01-11 23:27:20 +08:00
.gitignore add spec 2015-03-27 14:30:07 +08:00
.gitmodules add tests 2015-01-11 23:27:20 +08:00
.travis.yml add 2015-02-12 21:59:43 +08:00
CHANGELOG.md 0.6.2 2015-04-24 11:15:48 +08:00
LICENSE frame -> packet 2015-01-10 00:00:16 +08:00
Makefile emqttd 2015-03-13 00:07:34 +08:00
README.md http:// 2015-04-20 05:02:08 +08:00
TODO Retained Messages 2015-04-09 11:41:24 +08:00
go fix go script 2015-04-13 15:47:11 +08:00
rebar upgrade esockd, mochiweb 2015-03-02 01:40:22 +08:00
rebar.config gproc 0.4 2015-04-23 23:14:15 +08:00

README.md

Overview Build Status

emqttd is a clusterable, massively scalable MQTT V3.1/V3.1.1 broker written in Erlang/OTP. emqttd support both MQTT V3.1/V3.1.1 Protocol Specification.

emqttd requires Erlang R17+ to build.

Download

Download binary packeges for linux, mac and freebsd from http://emqtt.io/downloads

Benchmark

Benchmark 0.6.1-alpha on a ubuntu/14.04 server with 8 cores, 32G memory from QingCloud:

200K+ Connections, 200K+ Topics, 20K+ In/Out Messages/sec, 20Mbps+ In/Out with 8G Memory, 50%CPU/core

Featues

Full MQTT V3.1.1 Support

Both V3.1.1 and V3.1 protocol support

QoS0, QoS1, QoS2 Publish and Subscribe

Session Management and Offline Messages

Retained Messages

TCP/SSL connection support

$SYS/borkers/# support

Passed eclipse paho interoperability tests

Clusterable, Massively Scalable

Massive Connections Clients Support

Cluster brokers on servers or cloud hosts

Bridge brokers locally or remotelly

Startup in Five Minutes

$ git clone git://github.com/emqtt/emqttd.git

$ cd emqttd

$ make && make dist

$ cd rel/emqttd

$ ./bin/emqttd console

Deploy and Start

start

cp -R rel/emqttd $INSTALL_DIR

cd $INSTALL_DIR/emqttd

./bin/emqttd start

stop

./bin/emqttd stop

Configuration

etc/app.config

 {emqttd, [
    {auth, {anonymous, []}}, %internal, anonymous
    {listen, [
        {mqtt, 1883, [
            {acceptors, 4},
            {max_clients, 1024}
        ]},
        {mqtts, 8883, [
            {acceptors, 4},
            {max_clients, 1024},
            %{cacertfile, "etc/ssl/cacert.pem"}, 
            {ssl, [{certfile, "etc/ssl.crt"},
                   {keyfile,  "etc/ssl.key"}]}
        ]},
        {http, 8083, [
            {acceptors, 1},
            {max_clients, 512}
        ]}
    ]}
 ]}

etc/vm.args


-name emqttd@127.0.0.1

-setcookie emqtt

When nodes clustered, vm.args should be configured as below:

-name emqttd@host1

Cluster

Suppose we cluster two nodes on 'host1', 'host2', Steps:

on 'host1':

./bin/emqttd start

on 'host2':

./bin/emqttd start

./bin/emqttd_ctl cluster emqttd@host1

Run './bin/emqttd_ctl cluster' on 'host1' or 'host2' to check cluster nodes.

HTTP API

emqttd support http to publish message.

Example:

curl -v --basic -u user:passwd -d "qos=1&retain=0&topic=a/b/c&message=hello from http..." -k http://localhost:8083/mqtt/publish

URL

HTTP POST http://host:8083/mqtt/publish

Parameters

Name Description
qos QoS(0, 1, 2)
retain Retain(0, 1)
topic Topic
message Message

Design

Design Wiki

License

The MIT License (MIT)

Author

feng at emqtt.io

Thanks

@hejin1026 (260495915 at qq.com)

@desoulter (assoulter123 at gmail.com)

@turtleDeng