create emqx project

Ery Lee 92d91bd3f2 acl před 11 roky
apps 92d91bd3f2 acl před 11 roky
data c9d3e2d291 mqtt 3.1.1 protocol před 11 roky
deps 3a6ed9a876 0.2 project structure před 11 roky
doc 47df4055f3 v0.4.0 před 11 roky
plugins 7213e81fb3 auth před 11 roky
rel c52857f398 add broker, bridges, listeners commands před 11 roky
scripts f3057c08e4 0.3.0 changes před 11 roky
tests 68eb225981 add tests před 11 roky
.gitignore 51e5af44f8 ignore rel/emqttd* před 11 roky
.gitmodules 68eb225981 add tests před 11 roky
.travis.yml db6d9cc49b add před 11 roky
CHANGELOG.md 1c3c4e000a bridge... před 11 roky
LICENSE 6ff4f59a25 frame -> packet před 11 roky
Makefile 2d2aa2f79a upgrade esockd, mochiweb před 11 roky
README.md 83c376ad83 Features, Clusterable, Massively Scalable před 11 roky
TODO 9512b18c53 merge emqttc před 11 roky
go 8cc8046a02 add před 11 roky
rebar 2d2aa2f79a upgrade esockd, mochiweb před 11 roky
rebar.config aca536cd8a rename project name from 'emqtt' to 'emqttd' před 11 roky

README.md

eMQTT Build Status

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

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

eMQTT requires Erlang R17+.

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/emqtt.git

$ cd emqtt

$ make && make dist

$ cd rel/emqtt

$ ./bin/emqtt console

Deploy and Start

start

cp -R rel/emqtt $INSTALL_DIR

cd $INSTALL_DIR/emqtt

./bin/emqtt start

stop

./bin/emqtt stop

Configuration

etc/app.config

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

etc/vm.args


-name emqtt@127.0.0.1

-setcookie emqtt

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

-name emqtt@host1

Cluster

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

on 'host1':

./bin/emqtt start

on 'host2':

./bin/emqtt start

./bin/emqtt_ctl cluster emqtt@host1

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

HTTP API

eMQTT 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)