前言:
MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。若初次接触MQTT协议,可先理解以下概念:
【MQTT协议特点】——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制。
【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括发布者,代理器(服务器)和订阅者。
【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。
【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。
一、 MQTT服务之Apache Apollo
Apache Apollo是一个代理服务器,其是在ActiveMQ基础上发展而来的,可以支持多种协议,如:STOMP、AMQP、MQTT、SSL等。
搭建环境
- 虚拟机 Ubuntu 16.04.5 LTS
- Apache-Apollo-1.7.1
准备工作
由于搭建Apollo环境变量需要有JAVA_HOME,这个时候需要安装JDK环境
到官网下载Apache-Apollo-1.7.1 http://www.apache.org/dyn/closer.cgi?path=activemq/activemq-apollo/1.7.1/apache-apollo-1.7.1-unix-distro.tar.gz
或者通过命令下载1
wget http://www.apache.org/dyn/closer.cgi?path=activemq/activemq-apollo/1.7.1/apache-apollo-1.7.1-unix-distro.tar.gz
解压源码包
1
tar -zxvf apache-apollo-1.7.1-unix-distro.tar.gz
配置Apache-Apollo
进入解压目录下的bin目录
1 | ./apollo //执行后会显示如下帮助信息 |
- 创建broker实例
1 | ./apollo create mybroker |
- 启动服务
1 | ./mybroker/bin/apollo-broker run |
可以通过配置文件配置域名,端口,及其连接认证等信息
配置信息在创建的broker实例目录下mybroker/etc/apollo.xml
二、 MQTT服务之Mosquitto
Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案。
安装
源码包方式
- 获取源码包 http://mosquitto.org/files/source/
- 解压后在源码目录里找到配置文件config.mk, 参数说明如下
1 | # 是否支持tcpd/libwrap功能. |
apt-get方式
1 | sudo apt-get install mosquitto |
- 这里需要注意的是,默认情况下Mosquitto的安装需要OpenSSL的支持;如果不需要SSL,则需要关闭config.mk里面的某些与SSL功能有关的选项(WITH_TLS、WITH_TLS_PSK)。接着,就是运行make install进行安装,完成之后会在系统命令行里发现mosquitto、mosquitto_passwd、mosquitto_pub和mosquitto_sub四个工具(截图如下),分别用于启动代理、管理密码、发布消息和订阅消息。
配置运行
安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是详细的配置参数说明。
1 | # ================================================================= |
最后,启动Mosquitto服务很简单,直接运行命令行“mosquitto -c /etc/mosquitto/mosquitto.conf -d”即可开启服务。
测试
订阅1
mosquitto_sub -h localhost -v -t mytopic
发布1
mosquitto_pub -h localhost -t mytopic -m hello world