From 47ae8914b4d361a66f101d2b1a637ca87ee251ef Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Wed, 21 Jan 2015 12:37:55 +0800 Subject: [PATCH] GetStarted doc --- doc/GetStarted.md | 199 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 doc/GetStarted.md diff --git a/doc/GetStarted.md b/doc/GetStarted.md new file mode 100644 index 000000000..53daf0ad3 --- /dev/null +++ b/doc/GetStarted.md @@ -0,0 +1,199 @@ +# eMQTT Get Started + +## Overview + +eMQTT is a clusterable, massively scalable, fault-tolerant and extensible MQTT V3.1/V3.1.1 broker written in Erlang/OTP. + +eMQTT is aimed to provide a solid-stable broker that could be clusterd to support millions of connections and clients. + +## Requires + +eMQTT is cross-platform, could run on windows, linux, freebsd and mac os x. + +eMQTT requires Erlang R17+ to build from source. + +## Featues + +### Full MQTT V3.1.1 Support + +MQTT V3.1.1 and V3.1 protocol support + +QoS0, QoS1, QoS2 Publish and Subscribe + +Session Management and Offline Messages + +Retained Messages + +Passed eclipse paho interoperability tests + +### Clusterable, Massively Scalable + +Massive Connections Clients Support + +Cluster brokers on servers or cloud hosts + +Bridge brokers locally or remotelly + +## Download, Install + +### Download + +Dowload binary packages from [http://emqtt.io/downloads](http://emqtt.io/downloads]. + +Please build from source if no packages for your platform, or contact us. + +### Install + +Extract tgz package to your installed directory. for example: + +``` +tar xvf emqtt-ubuntu64-0.3.0-beta.tgz && cd emqtt +``` + +### Startup + +Startup console for debug: + +``` +cd emqtt && ./bin/emqtt console +``` + +You could see all RECV/SENT MQTT Packages on console. + +Start as daemon: + +``` +cd emqtt && ./bin/emqtt start +``` + +eMQTT occupies 1883 port for MQTT, 8083 for HTTP API. + +### Status + +``` +cd emqtt && ./bin/emqtt_ctl status +``` + +### Stop + +``` +cd emqtt && ./bin/emqtt stop +``` + +## Configuration + +### etc/app.config + +``` +{emqtt, [ + %Authetication. Internal, Anonymous Default. + {auth, {anonymous, []}}, + {access, []}, + {session, [ + {expires, 1}, %hours + {max_queue, 1000}, + {store_qos0, false} + ]}, + {retain, [ + {store_limit, 100000} + ]}, + {listen, [ + {mqtt, 1883, [ + {max_conns, 1024}, + {acceptor_pool, 4} + ]}, + {http, 8083, [ + {max_conns, 512}, + {acceptor_pool, 1} + ]} + ]} +]} +``` + +### etc/vm.args + +``` +-name emqtt@127.0.0.1 + +-setcookie emqtt +``` + +## Cluster + +Suppose we cluster two nodes on 'host1', 'host2', Steps: + +### configure and start node on host1 + +configure 'etc/vm.args': + +``` +-name emqtt@host1 +``` + +then start: + +``` +./bin/emqtt start +``` + +### configure and start node on host2 + +configure 'etc/vm.args': + +``` +-name emqtt@host2 +``` + +``` +./bin/emqtt start +``` + +### cluster two nodes + +Cluster from 'host2': + +``` +./bin/emqtt_ctl cluster emqtt@host1 +``` + +or cluster from 'host1': + +``` +./bin/emqtt_ctl cluster emqtt@host2 +``` + +then check clustered nodes on any host: + +``` +./bin/emqtt_ctl cluster +``` + +## HTTP API + +eMQTT support HTTP API to publish message from your APP to MQTT client. + +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 + +## Contact + +feng@emqtt.io +