一、基础概念:

  • MQTT消息:使用MQTT协议的基础单元是消息,每个消息包含负载信息payload,协议种类qos,集合的属性和一个主题名字
  • MQTT客户端:网络连接到服务器,发布消息,订阅消息,取消订阅,关闭与服务器的连接
  • MQTT服务器:接收客户端的网络连接,接收客户端的发布消息,处理客户端 的订阅和取消订阅的请求,发送符合客户端订阅的消息,关闭网络连接
  • MQTT的订阅:一个订阅包含主题过滤器和一个QoS最大值,一个订阅与一个会话连接,一个会话可以有多个订阅,同一会话里的每个订阅有不同的主题过滤器,即一个会话里没有完全相同的订阅内容
  • MQTT的遗愿消息Will Message:在网络断开的时候服务器发布的
  • MQTT的控制报文结构:固定头+变长头+负载消息,变长头里因控制报文类型的不同而不同,变长报文部分的最后包含了报文属性,负载消息不是所有报文都必须要有的,有些没有,有些可选的有,订阅报文一定要有负载消息

java mqtt关闭订阅 mqtt订阅消息_消息队列

控制报文的发送流程:

java mqtt关闭订阅 mqtt订阅消息_消息队列_02

 

二、消息质量

MQTT消息质量有三个等级,QoS 0,QoS 1和 QoS 2。
QoS 0:最多分发一次。消息的传递完全依赖底层的TCP/IP网络,协议里没有定义应答和重试,消息要么只会到达服务端一次,要么根本没有到达。
QoS 1:至少分发一次。服务器的消息接收由PUBACK消息进行确认,如果通信链路或发送设备异常,或者指定时间内没有收到确认消息,发送端会重发这条在消息头中设置了DUP位的消息。
QoS 2:只分发一次。这是最高级别的消息传递,消息丢失和重复都是不可接受的,使用这个服务质量等级会有额外的开销。