MQTT 消息服务器,emqttd 0.13.0 beta 发布
emqttd 0.13.0-beta 版本正式发布。支持基于 Token Bucket/Leaky Bucket 算法的速率控制(Rate Limiting)。升级 esockd 库到3.0版本,支持参数化的Socke连接模块。改进MQTT TCP连接数据收发,采用全异步模式。
改进升级
Protocol Compliant - Session Present Flag (#163)
Compilation fails if repo is cloned with a different name (#348)
emqttd_client: replace gen_tcp:send with port_command (#358)
TCP sndbuf, recbuf, buffer tuning (#359)
emqttd_client.erl to handle 'inet_async', 'inet_reply' properly (#360)
Refator the client/session management design
Bug修复
Cannot kick transient client out when clientId collision (#357)
Fix the order of emqttd_app:start_server/1 (#367)
emqttd_session:subscribe/2 will crash (#374)
性能测试
3.1G memory and 50% CPU/core:
Connections: 250K Subscribers: 250K Topics: 50K Qos1 Messages/Sec In: 4K Qos1 Messages/Sec Out: 20K Traffic In(bps): 12M+ Traffic Out(bps): 56M+
Dashboard插件
Bugfix: emqttd-0.12.3 release: metrics are not right (emqttd_dashboard#36)
Bugfix: No Overview broker informations on non-anonymous sessions (emqttd_dashboard#33)
Improve: Overview page add new metrics (emqttd_dashboard#35)
MySQL认证插件
Improve: emqtt_acl_mysql function_clause error bug (emqttd_plugin_mysql#4)
PgSQL认证插件
Improve: Auto reconnect plugins (emqttd_plugin_pgsql#4)
Stomp协议插件
Improve: upgrade to esockd 3.0。
[emqttd]是采用Erlang语言开发,全面支持MQTT V3.1.1协议,支持集群和大规模连接的开源MQTT消息服务器。 [emqttd]致力于发布一个基于Erlang/OTP语言平台,企业级稳定可靠,完全开源免费,可集群支持大规模物联网、移动互联网连接的MQTT消 息服务器。
# 完整的MQTT V3.1/V3.1.1协议支持
* 全面支持MQTT V3.1/V3.1.1协议规范
* QoS0/1/2消息发布与订阅支持
* Session管理和离线消息支持
* Last Will消息支持
* Retained消息支持
* TCP/SSL连接支持
* MQTT over WebSocket连接支持
* HTTP Publish消息发布接口
* ‘$SYS/#’系统Topic支持
* 基于ClientId、IP地址认证支持
* 基于用户名、密码认证支持
* 基于ClientId、用户名、IP地址的ACL访问控制
* 多服务器集群(Cluster)支持
* 多节点桥接(Bridge)支持
* 单节点50万+客户端连接支持
* 插件扩展架构支持
* 通过Eclipse Paho项目的服务器互操作性测试
# 完全开放源码,多节点集群支持
* 开放源码, MIT开源软件许可协议
* 多服务器集群, 大规模客户端连接支持
* 安装简便, 下载解压即可启动运行
* 插件架构, 定制或扩展服务器功能
# 快速下载安装
emqttd可跨平台运行在Linux、FreeBSD、Windows与 Mac OS X。[http://emqtt.io/downloads]页面下载程序安装包。
解压tgz格式程序包,到安装目录启动。例如:
tar xvf emqttd-ubuntu64-0.8.1-alpha-20150529.tgz && cd emqttd
控制台模式启动,用于调试。控制台可以打印所有收发的MQTT报文
./bin/emqttd console
守护进程模式启动,默认占用1883端口用于MQTT连接,8083端口用于HTTP接口
./bin/emqttd start
查看运行状态
./bin/emqttd_ctl status
停止
./bin/emqttd stop
下载源码编译:
git clone https://github.com/emqtt/emqttd.git
cd emqttd && make && make dist
HTTP消息发布接口测试
emqttd支持通过HTTP接口从应用程序向MQTT客户端发布消息:
curl -v --basic -u user:passwd -d "qos=1&retain=0&topic=/a/b/c&message=hello" -k http://localhost:8083/mqtt/publish
URL: HTTP POST http://host:8083/mqtt/publish
参数:
* qos: QoS(0, 1, 2)
* retain: Retain(0, 1)
* topic: Topic
* message: Message