目录
- 一、MQTT 协议简介
- 二、使用 apollo 搭建 MQTT 服务器
- 三、使用 MQTT 客户端创建连接
- 四、消息发布与订阅的基本操作
- 五、总结
- 六、参考资料
一、MQTT 协议简介本文内容:
学习和熟悉 MQTT 协议,在本机上安装 MQTT 服务器和客户端软件,练习消息发布与订阅,比如自定义一个天气预报的消息主题(提示:可以利用课堂教学资料或网上资源)
- MQTT( Message Queuing Telemetry Transport,消息队列遥测传输协议 ),是一种基于发布/订阅( publish/subscribe )模式的 “ 轻量级 ” 通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在 1999 年发布。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
- MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
- MQTT 协议当前版本为,2014 年发布的 MQTT v3.1.1。除标准版外,还有一个简化版 MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于 TCP/IP 网络,如:ZigBee。
- MQTT 协议运行在 TCP/IP 或其他网络协议,提供有序、无损、双向连接。其特点包括:
- 1、使用的发布/订阅消息模式,它提供了一对多消息分发,以实现与应用程序的解耦;
- 2、对负载内容屏蔽的消息传输机制;
- 3、对传输消息有三种服务质量(QoS):
——最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1;
——至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1;
——只有一次,确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别; - 4、数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量;
- 5、通知机制,异常中断时通知传输双方;
![详介 MQTT 服务器的搭建与客户端连接](http://img.readke.com/220820/153F36338-0.jpg)
文章图片
- 实现MQTT协议需要:客户端和服务器端
- MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
- MQTT传输的消息分为:主题(Topic)和负载(payload)两部分
- Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
- payload,可以理解为消息的内容,是指订阅者具体要使用的内容
二、使用 apollo 搭建 MQTT 服务器 1)配置 apollo说明:
更多信息了解请百度搜索:消息通信的利器-MQTT协议简介及协议原理
![]()
文章图片
- 下载 apollo 链接:https://pan.baidu.com/s/1fwm0KnB7xG_JBna7nM-mpA
提取码:vy47
- 解压缩文件
- 配置 jdk(
说明:
如果之前已经配置好,可以直接忽略,安装版本不可过高,否则后面搭建不成功),参考博客:JDK安装与环境变量配置 - 然后进入到 apollo 下面的 bin 文件夹下,并使用命令
apollo.cmd create mybroker
(注:
mybroker 是自己随便取得一个名字),创建成功如下图所示。
文章图片
- 使用 cmd 进入到
apache-apollo-1.7.1\bin\mybroker\bin
路径下,运行命令.\apollo-broker-service install
和.\apollo-broker-service start
即可。
文章图片
- 在服务中可以看到有这个 Apollo:mybroker 运行。
文章图片
- 在浏览器中输入
http://127.0.0.1:61680
,进入 apollo 的登录页面。
文章图片
- 第一次登录输入:Username=
admin
,Password=password
即可。
文章图片
- 但是,第二次登陆的时候,就无法再次登录。可以输入:
https://127.0.0.1:61681
,进行再次登录。
- 查看自己电脑的 IP 是多少。
文章图片
- 登录 MQTT 服务器打开之后,选择
configration
下选择apollo.xml
文件,修改属性为服务器
ip
(192.168.0.2
),
同步修改,以及tcp
节点下将默认的tcp://0.0.0.0:61613
修改为服务器的ip
,以供局域网使用,点击Save
保存,即可在局域网内使用服务器的ip
登录。
文章图片
- 使用地址
http:\\192.168.0.2:61680
可以成功打开。
文章图片
- 如果主机地址换了,可以依照上面的方法重新修改
apollo.xml
文件。 - 至此,MQTT 服务器搭建基本完成了。
- 下载客户端链接:https://pan.baidu.com/s/1egAsqFVHbrR7VMrzbr2AOw
提取码:go0f
- 解压后,双击运行
paho.exe
。
文章图片
- 添加连接。
文章图片
- 点击
选项
,勾选上登录,并输入用户名和密码
文章图片
- 输入服务器地址(刚刚的
apollo.xml
文件内的),然后点击连接
,即可连接成功。
文章图片
- 服务器显示连接的 IP 及端口号等信息。
文章图片
- 按照上述方法再额外建立一个连接(
注
:可以使用同一局域网的 PC 连接服务器,前提是安装了客户端,这里我没有别的 PC ,就用本机额外建立了一个连接)。
文章图片
文章图片
- 我这里显示的是:同一主机使用不同的端口连接了服务器。
- 点击
+
按钮,添加一个主题,然后点击订阅
即可(说明:
由于并没有 hello 主题发出,所以没有收到消息,其它客户端发布主题后,该客户端会收到消息)。
文章图片
- 编辑
主题
和消息
,并点击发布
,历史记录中显示已发布。
文章图片
- 由于客户端
test1
已订阅了hello
主题,所以同时会收到该消息。
文章图片
- MQTT 使用起来十分的方便,在多个小型设备之间可以进行数据的传输,这篇文章只是对 MQTT 进行订阅 \ 发送功能的简介使用,并没有对 MQTT 协议进行深入的了解,但是由于 MQTT 的轻便、可靠的使用,在未来的物联网方面肯定有很大的促进作用,所以还是有必要去学习使用相关的操作、功能。
2、Apollo MQTT在windows上面环境部署与连接测试