Go to file
Ery Lee b51c64a774 0.5.5 2015-04-09 11:55:57 +08:00
apps/emqttd fix issue #79 2015-04-09 11:54:30 +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 'acceptor_pool' option to 'acceptors' 2015-03-13 20:18:01 +08:00
plugins add plugins 2015-03-12 12:50:18 +08:00
rel control commands 2015-03-23 00:06:31 +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 ignore log 2015-03-19 10:51:24 +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.5.5 2015-04-09 11:55:57 +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 Merge branch 'master' of github.com:emqtt/emqtt 2015-03-23 15:17:36 +08:00
TODO performance issue 2015-03-20 01:34:52 +08:00
go add 2015-01-12 12:58:16 +08:00
rebar upgrade esockd, mochiweb 2015-03-02 01:40:22 +08:00
rebar.config esockd 2.* 2015-03-15 20:26:49 +08:00

README.md

eMQTTD Build Status

eMQTTD is a clusterable, massively scalable, fault-tolerant and extensible MQTT V3.1/V3.1.1 broker written in Erlang/OTP.

eMQTTD support MQTT V3.1/V3.1.1 Protocol Specification.

eMQTTD requires Erlang R17+.

Benchmark

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

200K Connections, 200K Topics, 20K Messages/sec, 20Mbps In/Out with 7G Memory, 40%CPU/core

NOTICE

eMQTTD still cannot handle massive retained messages.

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)