文章目录
一、MQTT说明
1.1、mqtt文档
官网:https://mqtt.org/
仅供参考:https://www.emqx.com/zh/mqtt
1.2、MQTT消息服务质量
MQTT规定了3种消息等级
-
QoS 0:
消息最多传递一次
,不需要客户端给与回复,如果当时客户端不可用,则会丢失该消息。 -
QoS 1:
a、消息传递至少 1 次
,发布者会发布消息,并等待接收者的 PUBACK 报文的应答,在规定的时间内要收到接收者的应答
,发布者若没收到应答
,会将消息的 DUP 置为 1 并重发消息
。
b、所以Qos 1消息级别取决于接受者在规定时间内给与发布者反馈,若没有反馈,则会再次接受到消息。 -
QoS
a、消息仅传送一次
,发布者发布 QoS 为 2 的消息之后,会将发布的消息储存
起来并等待接收者回复
PUBREC 的消息,发送者收到 PUBREC 消息后,它就可以安全丢弃掉之前的发布消息,因为它已经知道接收者成功收到了消息。
b、发布者会保存 PUBREC 消息并应答一个 PUBREL,等待接收者回复 PUBCOMP 消息,当发送者收到 PUBCOMP 消息之后会清空之前所保存的状态。
c、QoS 2 消息的核心是接收者给发布者反馈两次接收结果,相当于一次接收,一次确认接收
。
1.1.1、归纳
- QoS 0 消息只发一次,不在乎是否被别的客户端收到,只要发送了就算结束。
- QoS 1 消息需要消息接收者在规定时间内给予反馈,结束的标志是在发送后规定时间内收到反馈,否则就会一直发送。
- QoS 2 消息需要发送者和接收者双方互相进行消息确认,只要有一方没有确定就不会结束。
二、MQTT环境搭建
有2种方式
1、原生mqtt
2、rabbitmq的mqtt插件
第一种:centos、Ubuntu 安装mqtt和使用https://blog.csdn.net/qq_44413835/article/details/120606097
mqtt客户端下载
:
我是使用MQTTBox: https://dl.pconline.com.cn/download/1323304.html
mqttx下载:https://mqttx.app/zh
第二种:安装rabbitmq在开启mqtt插件-好处rabbitmq有web管理平台
注明:如果不会使用rabbitmq查看我的消息队列的专栏,里面有集成篇
docker安装rabbitmq
https://blog.csdn.net/qq_44413835/article/details/123648048
进入docker-rabbitmq容器
docker exec -it rabbitmq /bin/bash
安装后开启mqq插件
# 打开rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_mqtt
#打开rabbitmq_web_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt
如图:
三、boot集成原生mqtt
1.1、项目结构
版本boot:2.3.6.RELEASE、web工程
1.2、依赖
<!--集成MQTT-->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
</d