MQTT到底是干嘛的?一篇讲清原理 + Spring Boot实战

MQTT到底是干嘛的?一篇讲清原理 + Spring Boot实战 点击上方“java大数据修炼之道”, 选择“设为星标”技术干货发文后 第一时间奉上MQTT到底是干嘛的一篇讲清原理 Spring Boot实战很多人听过 MQTT但一到项目里就懵了什么时候该用 MQTT和 HTTP 有什么区别Spring Boot 怎么接入这篇文章不讲虚的直接用原理 实战带你搞明白。一、MQTT 是干嘛的一句话MQTT 是一种“发布 / 订阅”的轻量级消息协议你可以把它理解成一个“中间人”设备A发布消息设备B订阅消息MQTT服务器负责转发不像 HTTP 那样“你请求我响应”MQTT 更像谁关心这个消息就订阅它二、MQTT 和 HTTP 有什么区别最核心的区别就一个对比HTTPMQTT通信方式请求-响应发布-订阅连接方式短连接长连接实时性一般很强适用场景Web接口IoT / 实时消息 举个例子HTTP你点一下按钮请求一次MQTT设备状态变化自动推送三、MQTT 常见应用场景这些你可能都见过智能家居灯、空调物联网设备传感器实时消息系统车联网 核心关键词低延迟 实时推送 低带宽四、Spring Boot 接入 MQTT实战这里用主流方案MQTT BrokerEMQX客户端Eclipse Paho1️⃣ 引入依赖dependency groupIdorg.eclipse.paho/groupId artifactIdorg.eclipse.paho.client.mqttv3/artifactId version1.2.5/version/dependency2️⃣ MQTT配置Configurationpublic class MqttConfig { Bean public MqttClient mqttClient() throws Exception { String broker tcp://127.0.0.1:1883; String clientId springboot-client; MqttClient client new MqttClient(broker, clientId); MqttConnectOptions options new MqttConnectOptions(); options.setCleanSession(true); client.connect(options); return client; }}3️⃣ 发送消息发布Servicepublic class MqttPublisher { Autowired private MqttClient mqttClient; public void publish(String topic, String message) throws Exception { MqttMessage mqttMessage new MqttMessage(message.getBytes()); mqttClient.publish(topic, mqttMessage); }}4️⃣ 接收消息订阅Componentpublic class MqttSubscriber { Autowired public MqttSubscriber(MqttClient client) throws Exception { client.subscribe(test/topic, (topic, message) - { System.out.println(收到消息: new String(message.getPayload())); }); }}五、实战中你一定会踩的坑我自己踩过的几个1️⃣ 连接断开 MQTT是长连接一旦断开要重连2️⃣ Topic设计不合理 不要乱命名建议device/{deviceId}/status device/{deviceId}/command3️⃣ 消息质量QoSMQTT有3种0最多一次可能丢1至少一次可能重复2只一次最安全 大多数用 QoS 1 就够了六、总结MQTT 本质就是用发布订阅模式解决实时通信问题如果你的项目涉及实时推送设备通信IoT MQTT 基本是标配最后后面我会继续分享MQTT Spring Boot 实战项目EMQX 集群部署高并发优化方案 如果你在做后端开发这些一定用得上end往期精彩文章复习回顾1.SpringBoot 插件化开发模式真香啊 2.一行代码实现请假审批流程Java版 3.血泪教训8 个线程池最佳实践和坑 4.SpringBoot骚操作一个注解秒杀所有类型的文件下载 5.Controller层代码这么写同事们都模仿起来了最近整理一份资料《程序员学习手册》覆盖了 Java技术、面试题精选、操作系统基础知识、计算机基础知识、Linux教程、计算机网络等等。获取方式点“在看关注公众号Java大数据修炼之道并回复PDF领取更多内容陆续奉上。长按识别下方二维码关注后回复关键字:PDF领取你想学的java知识这里都有,长按下方图片识别关注我们吧~如喜欢本文请点击右上角把文章分享到朋友圈 因公众号更改推送规则请点“在看”并加“星标”第一时间获取精彩技术分享 点分享点收藏点在看