
MQTT简介
MQTT是一种基于发布/订阅模式的轻量级通讯协议,该协议构建在TCP/IP协议上。 MQTT最大的有点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,MQTT在物联网、小型设备、移动应用等方面有广泛应用。
特点
-
开放消息协议,简单易实现 -
发布订阅模式,一对多消息发布 -
基于TCP/IP网络连接,提供有序,无损,双向连接 -
2字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量 -
消息QoS支持,可靠传输保证
应用
-
物联网M2M通信,物联网大数据采集 -
Android消息推送,WEB消息推送 -
智能硬件、智能家具、智能电器 -
车联网通信,电动车站桩采集 -
智慧城市、远程医疗、远程教育 -
电力、石油与能源等行业市场
MQTT控制报文的结构
MQTT通过交换一些预定义的MQTT控制报文来工作,每条MQTT命令消息的消息头都包含一个固定的报头,有些消息会携带一个可变报文头和一个负荷。消息格式如下:
packagecom.xdemo.mqttconsumer.controller;importcom.xdemo.mqttconsumer.mqtt.MqttConsumerConfig;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;/***@Author:xdemo*@Date:2021/7/3017:20*@Description:*/@ControllerpublicclassTestController{@AutowiredprivateMqttConsumerConfigclient;@Value("${spring.mqtt.client.id}")privateStringclientId;@RequestMapping("connect")@ResponseBodypublicStringconnect(){client.connect();returnclientId+"连接到服务器";}@RequestMapping("disConnect")@ResponseBodypublicStringdisConnect(){client.disConnect();returnclientId+"与服务器断开连接";}}
测试
分别启动两个项目,可以在管理界面看到创建的两个客户端

调用发布消息接口发布消息

消费者控制台打印

客户端断线消息恢复
把消费者与服务端断开连接

再调用发布消息接口发送两条消息到topic1,然后再把消费者连接到服务端

控制台没有东西打印

修改消费者客户端配置,把setCleanSession改为false

重启项目,把消费者客户端断开连接,调用发布消息接口发布两条消息,再把消费者和服务端连接上

完
本篇文章来源于微信公众号: Java架构历程
微信扫描下方的二维码阅读本文

Comments NOTHING