Spring Boot 是根据 Spring 结构的快捷开发的一套工具,能够极大地进步开发人员的开发功率。MQTT(Message Queuing Telemetry Transport)是根据发布订阅(Publish/Subscribe)模式的轻量级音讯传输协议,一般用于物联网设备间的通信。下面是如何在 Spring Boot 中对接 MQTT 的步骤:
导入额定的依靠:运用 Spring Boot 自带的 maven/Gradle 功能,在项目的 pom.xml 或 build.gradle 中增加 Eclipse Paho 的 MQTT 客户端库依靠。
配置 MQTT 衔接:在配置文件 application.properties 或 application.yml 中,增加 MQTT 服务器的衔接信息、用户名、暗码等参数。
3.编写 MQTT 客户端代码:通过运用 Spring Boot 自带的 @Component、@Service、@Controller 等注解定义 MQTT 客户端的事务代码,并在需要运用 MQTT 服务的地方(例如在某个 REST 接口中)直接调用。
4.在代码中参与 MQTT 的回调函数:MQTT 的客户端需要完结 MqttCallback 接口并重写接口中的三个办法,分别是衔接丢失的回调、音讯收到的回谐和音讯发布的回调。
下面是一些示例代码:
pom.xml 中增加如下依靠:
<groupId>org.eclipse.paho\</groupId>
<artifactId>org.eclipse.paho.client.mqttv3\</artifactId>
<version>1.2.5\</version>
</dependency>
application.properties 中增加如下参数:
mqtt.broker.url=tcp\://localhost:1883
mqtt.broker.username=user
mqtt.broker.password=password
mqtt.clientId=clientId
mqtt.topic=test
接下来就能够在代码中运用 MQTT 客户端了。下面是一些示例代码:
@Service
public class MqttService {
@Value("${mqtt.broker.url}")
private String brokerUrl;
@Value("${mqtt.broker.username}")
private String userName;
@Value("${mqtt.broker.password}")
private String password;
@Value("${mqtt.clientId}")
private String clientId;
@Value("${mqtt.topic}")
private String topic;
private MqttClient mqttClient;
@PostConstruct
public void init() {
try {
mqttClient = new MqttClient(brokerUrl, clientId);
MqttConnectOptions connectOptions = new MqttConnectOptions();
connectOptions.setUserName(userName);
connectOptions.setPassword(password.toCharArray());
mqttClient.setCallback(new MqttCallback() {
public void connectionLost(Throwable throwable) {
//衔接中断
}
public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
//收到音讯
}
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
//发布完结
}
});
mqttClient.connect(connectOptions);
mqttClient.subscribe(topic);
} catch (MqttException e) {
//衔接失败
}
}
public void publishMessage(String topic, String message) {
MqttMessage mqttMessage = new MqttMessage(message.getBytes());
mqttMessage.setQos(0);
try {
mqttClient.publish(topic, mqttMessage);
} catch (MqttException e) {
}
}
}
上面的代码中,MqttService 类通过 @PostConstruct 注解,在启动时初始化 MQTT 客户端并衔接到 MQTT 服务器。然后,它重写了 MqttCallback 接口的三个办法,并在 messageArrived() 办法中履行自己的事务逻辑。一起,它还供给了 publishMessage() 办法,用于向 MQTT 服务器发布音讯。
运用Spring Boot衔接MQTT,主要是运用该结构自带的依靠和注解机制快速对接MQTT,并把MQTT的音讯接口暴露给应用程序开发者,使得开发者不需要关心MQTT的音讯传输细节即可处理MQTT音讯。
本文正在参与「金石计划」