Release Date: 2017-05-05

EMQ 2.2-beta.1 is now available. Many new features including Web Hook, Lua Hook and Proxy Protocol have been released in this version.

MQTT Listeners

Support to configure multiple MQTT TCP/SSL listeners for one EMQ node. For example:


                             -------
    -- External TCP 1883 --> |     |
                             | EMQ | -- Internal TCP 2883 --> Service
    -- External SSL 8883-->  |     |
                             -------

Configure a listener in etc/emq.conf:

    listener.tcp.${name}= 127.0.0.1:2883

    listener.tcp.${name}.acceptors = 16

    listener.tcp.${name}.max_clients = 102400

Proxy Protocol V1/2

The EMQ cluster is usually deployed behind a Load Balancer, such as HAProxy or NGINX:

                  -----
                  |   |
                  | L | --TCP 1883--> EMQ
    --SSL 8883--> |   |                |
                  | B | --TCP 1883--> EMQ
                  |   |
                  -----

The LB can pass the source IP, port of the TCP connection on to EMQ cluster by Proxy Protocol.

Enable Proxy Protocol support for MQTT Listener:

    ## Proxy Protocol V1/2
    ## listener.tcp.${name}.proxy_protocol = on
    ## listener.tcp.${name}.proxy_protocol_timeout = 3s

Web Hook Plugin

The Web Hook plugin emq-web-hook_ can trigger a webhook callback when a MQTT client connected to or disconnected from the broker, a MQTT message is published or acked.

Lua Hook Plugin

The Lua Hook plugin emq-lua-hook_ make it possible to extend the broker and write business logic with Lua script.

Improve the Auth/ACL Chain

We improved the Auth/ACL chain design in 2.2 release. The Auth request will be forwarded to next auth module if it is ignored by the current auth module:

               --------------           -------------           --------------
    Client --> | Redis Auth | -ignore-> | HTTP Auth | -ignore-> | MySQL Auth |
               --------------           -------------           --------------
                     |                       |                       |
                    \|/                     \|/                     \|/
               allow | deny            allow | deny            allow | deny

Support bcrypt password hash

Enable the bcrypt password hash in auth module, for example:

    auth.redis.password_hash = bcrypt

API Breaking Change

etc/emq.conf: 'mqtt.queue.' changed to 'mqtt.mqueue.'

emq-dashboard

Support 'Unsubscribe' action on WebSocket Page.

Version 2.3-beta.2 Version 2.3-beta.1 Version 2.2.0 Version 2.2-rc.2 Version 2.2-rc.1 Version 2.2-beta.3 Version 2.2-beta.2 Version 2.2-beta.1 Version 2.1.2 Version 2.1.1 Version 2.1.0 Version 2.1.0-rc.2 Version 2.1.0-beta.1 Version 2.1-beta Version 2.0.7 Version 2.0.6 Version 2.0.5 Version 2.0.4 Version 2.0.3 Version 2.0.2 Version 2.0.1 Version 2.0 Version 2.0-rc.3 Version 2.0-rc.2 Version 2.0-beta.3 Version 2.0-beta.2 Version 2.0-beta.1 Version 1.1.3 Version 1.1.2 Version 1.1.1 Version 1.1 Version 1.0.2 Version 1.0.1 Version 1.0 Version 0.17.1-beta Version 0.17.0-beta Version 0.16.0-beta Version 0.15.0-beta Version 0.14.1-beta Version 0.14.0-beta Version 0.13.1-beta Version 0.13.0-beta Version 0.12.3-beta Version 0.12.2-beta Version 0.12.1-beta Version 0.12.0-beta Version 0.11.0-beta Version 0.10.4-beta Version 0.10.3-beta Version 0.10.2-beta Version 0.10.1-beta Version 0.10.0-beta Version 0.9.3-alpha Version 0.9.2-alpha Version 0.9.0-alpha Version 0.9.1-alpha Version 0.8.6-beta Version 0.8.5-beta Version 0.8.4-beta Version 0.8.3-beta Version 0.8.2-alpha Version 0.8.1-alpha Version 0.8.0-alpha Version 0.7.1-alpha Version 0.7.0-alpha Version 0.6.2-alpha Version 0.6.1-alpha Version 0.6.0-alpha Version 0.5.5-beta Version 0.5.4-alpha Version 0.5.3-alpha Version 0.5.2-alpha Version 0.5.1-alpha Version 0.5.0-alpha Version 0.4.0-alpha Version 0.3.4-beta Version 0.3.3-beta Version 0.3.2-beta Version 0.3.1-beta Version 0.3.0-beta Version 0.2.1-beta Version 0.2.0 Version 0.1.5 Version 0.1.3 Version 0.1.4 Version 0.1.2 Version 0.1.1 Version 0.1.0