Highlights
Web Dashboard and MySQL, PostgreSQL Authentication/ACL Plugins!
Web Dashboard to monitor the broker
- Erlang VM's CPU, Memory, Processes, MaxFds.
- The broker's name, version, up time and system time.
- The broker's statistics of clients, sessions, topics and subscribers.
- The broker's metrics including packets(recv/send), bytes(recv/send) and message(recv/send)
- All clients that connected to the broker.
- All sessions with detailed internal status(inflight_queue, message_queue, awaiting_ack...).
- All topics the broker created and subscribed.
- A WebSocket Test Client.
- JSON/HTTP API for your application to query metrics, listeners, clients, sessions and topics of the broker.
New Plugin Design
A new Plugin Design and a Template Project for plugin development.
Authentication/ACL with MySQL/PostgreSQL
Released emqttd_plugin_mysql and emqttd_plugin_pgsql
Authentication with any user table in MySQL/PostgreSQL database.
Support md5, sha and sha256 password hash algorithm.
Support password hash with salt.
Provide a flexible ACL table for MySQL/PostgreSQL database
Enhancements
Cookie based authentication
Cookie based authentication for MQTT over WebSocket connections (#231)
Session statistics
Session Statistics including inflight_queue, message_queue, message_dropped, awaiting_rel, awaiting_ack, awaiting_comp (#213)
'./bin/emqttd_ctl sessions list' to show all sessions
'./bin/emqttd_ctl sessions show ClientId' to show a session
Clients management
Get all clients connected to the broker (#228, #230, #148, #129)
'./bin/emqttd_ctl clients show ClientId' to query client status (#226)
'./bin/emqttd_ctl clients kick ClientId' to kick out a client
Unnecessary Logs
Too many "inflight queue is full!" log when session is overloaded (#247)
There are two many "MQueue(~s) drop ~s" logs if the message queue of session is small (#244)
gen_server2
Use gen_server2(from RabbitMQ) to improve emqttd_session, emqttd_pubsub
BugFixes
emqttd_broker:unhook/2 cannot work (#238)
emqttd plugin cannot include_lib("emqttd/include/emqttd.hrl") (#233)
Too many 'Session ~s cannot find PUBACK' logs (#212)
emqttd_pooler cannot work