MQTT(MQ Telemetry Transport),消息队列遥测传输协议,轻量级的发布/订阅协议, 适用于一些条件比较苛刻的环境,进行低带宽、不可靠或间歇性的通信。目前已经是物联网消息通信事实上的标准协议了。值得一提的是mqtt提供三种不同质量的消息服务。
1).“至多一次”:消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
2).“至少一次”:确保消息到达,但消息重复可能会发生。
3).“只有一次”:确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
基于MQTT(但不仅限于)开源消息代理中间件(Brokers/servers),又有测试客户端,看了几个代理中间件,也百度了一下,应用比较多的有ActiveMQ、Apollo、Mosquitto等。先选择一个没那么复杂的Mosquitto来尝尝鲜。Mosquitto是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
安装:(参考官网 http://mosquitto.org/download/)
1.安装
(1).添加EPEL软件库
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
查看安装结果
[root@localhost ~]# yum repolist all | grep enabled
base/7/x86_64 CentOS-7 - Base enabled: 10,070
epel/x86_64 Extra Packages for Enterprise Linu enabled: 13,426
extras/7/x86_64 CentOS-7 - Extras enabled: 413
updates/7/x86_64 CentOS-7 - Updates enabled: 1,112
[root@localhost ~]#
(2).安装 mosquitto
查找 mosquitto 软件包
yum list all | grep mosquitto
查看 mosquitto 信息
[root@localhost ~]# yum info mosquitto
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: hkg.mirror.rackspace.com
* extras: mirrors.ustc.edu.cn
* updates: mirrors.aliyun.com
Installed Packages
Name : mosquitto
Arch : x86_64
Version : 1.6.10
Release : 1.el7
Size : 748 k
Repo : installed
From repo : epel
Summary : An Open Source MQTT v3.1/v3.1.1 Broker
URL : http://mosquitto.org/
License : BSD
Description : Mosquitto is an open source message broker that implements the MQ Telemetry
: Transport protocol version 3.1 and 3.1.1 MQTT provides a lightweight method
: of carrying out messaging using a publish/subscribe model. This makes it
: suitable for "machine to machine" messaging such as with low power sensors
: or mobile devices such as phones, embedded computers or micro-controllers
: like the Arduino.
[root@localhost ~]#
安装 mosquitto 软件包
yum install mosquitto
查看安装结果
[root@localhost ~]# yum list installed | grep mosquitto
mosquitto.x86_64 1.6.10-1.el7 @epel
[root@localhost ~]#
2.测试 mosquitto
(1).启动 mosquitto 主程序 会话1
[root@localhost ~]# mosquitto
1597721219: mosquitto version 1.6.10 starting
1597721219: Using default config.
1597721219: Opening ipv4 listen socket on port 1883.
1597721219: Opening ipv6 listen socket on port 1883.
(2).启动订阅 会话2
mosquitto_sub -t rimelink
(3).启动发布 会话3
mosquitto_pub -t rimelink -h localhost -m "hello,zhangsan"
mosquitto_pub -t rimelink -h localhost -m "hi,lisi"
(4).查看结果 会话2
可以看到订阅程序收到的信息
[root@localhost ~]# mosquitto_sub -t rimelink标签:x86,CentOS7.9,mqtt,mosquitto,消息,yum,root,localhost From: https://blog.51cto.com/u_13753753/5760160
hello,zhangsan
hi,lisi