搭建MQTT协议环境
2015-11-26 10:14
766 查看
搭建 MQTT协议环境
MQTT协议简介Mosquitto环境搭建流程
Mosquitto的优缺点
MQTT协议简介
MQTT,全称Message Queuing Telemetry Transport,译为:消息队列遥测传输协议。它是由IBM公司开发的一个轻量级的、基于代理的发布/订阅消息即时通讯协议,目前常用版本为v3.1、v3.1.1。在物联网、移动终端设备提供消息推送服务,可以更好地实现远程控制。其相较于XMPP(其消息体用的是xml)、HTTP,MQTT更加轻量级、且占用用户很少的带宽。MQTT规定了3种消息传递服务质量(QoS):
QoS值 | 描述 | |
---|---|---|
0 | At most once(至多1次),一般适用于丢失一次记录无所谓; | <= 1 |
1 | At least once(至少1次),确保消息到达,但可能会发生重传; | ‘>= 1 |
2 | Exactly once(只有1次),确保消息到达1次,消息不能丢失或重传; | == 1 |
Mosquitto环境搭建
http://mqtt.org/software这里提供了IBM官方推荐的各种Brokers/Servers,及支持的各种语言版本的API,可以根据自己的实际情况选择不同的版本。这里我使用Mosquitto(用C来写的,比较容易看懂!),下面简单介绍它的安装和注意事项:Mosquitto源代码下载并解压
wget http://mosquitto.org/files/source/mosquitto-1.3.4.tar.gz
tar –xzvf mosquito-1.3.4.tar.gz
进入目录编译
cd mosquito-1.3.4
make
当然,这里会出现一些错误,根据错误提示逐个解决:
1) ./mosquitto_internal.h:27:27: fatal error: openssl/ssl.h: No such file or directory
解决办法:安装OpenSSL库(即:sudo apt-get install libssl-dev)
2) ./mosquitto_internal.h:40:20: fatal error: ares.h: No such file or directory
解决办法:修改config.mk文件中的WITH_SRV:=yes为WITH_SRV:=no
3) g++: Command not found
解决办法:安装g++(即:sudo apt-get install g++)
安装完成
sudo make install
简单测试
1) 启动代理服务并打印调试信息(-v)
mosquitto -v
2) 指定主题
mosquitto_sub -v -t sensor(-t指定主题为test)
注意:这里会出现一个错误,即mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory. 即找不到libmosquitto.so.1.
重新连接该文件的位置,如下:sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1并更新动态链接库sudo ldconfig即可。
3) 发布内容
mosquitto_pub –t sensor –m 123456789(-m后面为发布的内容)
4) 测试结果
在mosquitto_sub端窗口发现打印出了“sensor 123456789”,跟发布端发布的消息相同,即表明测试结果正确!
5) 本次测试在Linux虚拟机中打开了3个终端窗口,分别代表代理服务器、发布者和订阅者,它们之间的联系如下图所示:
Mosquitto的优缺点
对Mosquitto源代码的分析发现,Mosquitto程序使用订阅树的方式来维护客户端之间的订阅/发布消息,逻辑清晰,便于开发维护;但是,订阅树使用遍历的方式查找,当节点较多或客户端数量较多时,明显地遍历过程效率较低。(遍历过程涉及到:订阅、发布、取消订阅)相关文章推荐
- 把握5大要点提高APP用户留存率
- 智游推送技术原理
- 如何让人在10秒之内记住你的APP
- APP后期运营小技巧
- 推送服务:打破手游用户“沉默”局面
- 推送服务
- Mac安装mosquitto 使用brew安装后没有mosquitto命令可以执行
- MQTT mosquitto的初步学习
- windows mosquitto.exe闪退
- Android上的Mosquitto推送
- 如何让人在10秒之内记住你的APP
- APP的后期运营小技巧
- 推送服务:打破手游用户“沉默”局面
- APP超越预期效果的6种方法
- 使用Go Hijack和jQuery轻松实现异步推送服务 推荐
- 配置Lync 推送服务 推荐
- superpush-高效分布式推送服务
- mosquitto python 客户端安装
- mosquitto安装、配置、运行
- mosquitto安装与配置以及mosquitto-auth-plug安装、配置及要点记录