介绍:本文章主要是针对springboot3集成MQTT发送信息和接收信息的简单操作
一、什么是MQTT
- MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上。
- MQTT最大优点在于,可以以极少的代码和有限的带宽,为远程连接设备提过实时可靠的消息服务,作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用
- MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,列如:水位传感器,无人机,医疗设备、智能家居等都在使用MQTT。
二、那如何使用springboot集成MQTT实时接收发送信息。
1、我们先导入mqtt版本相关依赖。
<!-- MQTT spring-integration-mqtt 包含了 org.eclipse.paho.client.mqttv3 -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<version>5.5.14</version>
</dependency>
2、在application.yml中配置好相关属性,便与后续连接地址或者是账号密码发生变化,不需要去改代码直接修改配置文件即可,由于我这边使用的是购买的mqtt服务,不是自己本地配置mqtt服务所以连接地址不一定一个模样。
# mqtt 配置
com:
mqtt:
url: ssl://xxxxx.xxxx.xxx-xxxxx.emqxsl.cn // 连接地址
clientId: mqttx_7f91ba0d // 用户id(可以随机)
topics: test/# // 订阅的主题
username: serverManager // 账号
password: robsense2015 // 密码
timeout: 10 // 连接超时时长
keepalive: 20 // 心跳间隔 (每20秒对服务发送消息)
3.通过使用 @Configuration
和 @ConfigurationProperties
注解,Spring Boot 会自动将配置文件中的相关属性和数据就会绑定到这个类的字段上。
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* MQTT 客户端连接的基本配置,配置信息见 application.yml
*/
@Configuration
@ConfigurationProperties(prefix = "com.mqtt")
public class MqttConfiguration {
private String url;
private String clientId;
private String topics;
private String username;
private String password;
private String timeout;
private String keepalive;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getTopics() {
return topics;
}
public void setTopics(String topics) {
this.topics = topics;
}
public String getUsername() {
return username;
}
public void setUsername(String usernam