Cenos7安装mqtt服务器apache-artemis
MQTT服务器
1、什么是MQTT
MQTT是message queuing telementry transport的简称,中文是消息队列遥测传输协议。
它是一种基于发布、订阅模式的轻量级通讯协议,该协议构建于TCP/IP协议之上,由IBM在1999年发布。其最大的优点在于可以用极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。
作为一种低开销、低带宽占用的即时通讯协议,MQTT在物联网、小型设备、移动应用等方面有广泛的应用。
2、MQTT协议的组成
固定报文头(Fixed Header)
MQTT固定报文头最少有两个字节,第一字节包含消息类型(Message Type)和QoS级别等标志位。第二字节开始是剩余长度字段,该长度是后面的可变报文头加消息负载的总长度,该字段最多允许四个字节。
每个字节单独表示只能表示0-127的十进制数,为了表示大于127的数,需要使用多个字节,具体计算方法如下:
0xFF 0xFF 0x7F
127+128*(127+128*(127))=2,097,151
0xFF 0xFF 0xFF 0x7F
127+128*2097151=268,435,455
所以MQTT最多可携带256MB的信息数据。
可变报文头(Variable Header)
可变报文头主要包含协议名、协议版本、连接标志(Connect Flags)、心跳间隔时间(Keep Alive timer)、连接返回码(Connect Return Code)、主题名(Topic Name)等,后面会针对主要部分进行讲解。
有效负荷(Payload)
Payload直译为负荷,可能让人摸不着头脑,实际上可以理解为消息主体(body)。
当MQTT发送的消息类型是CONNECT(连接)、PUBLISH(发布)、SUBSCRIBE(订阅)、SUBACK(订阅确认)、UNSUBSCRIBE(取消订阅)时,则会带有负荷。
3、MQTT消息
消息类型(Message Type)
在固定报文头的第一字节,约定了消息的类型,其中MQTT支持14中不同的消息类型,如下图: