<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<version>6.2.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
package com.example.mqtt;
import org.eclipse.paho.client.mqttv3.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MqttStaticSender {
private static final Logger logger = LoggerFactory.getLogger(MqttStaticSender.class);
private static final String BROKER_URL = "tcp://broker.hivemq.com:1883";
private static final String CLIENT_ID = "static-java-client";
private static final String DEFAULT_TOPIC = "default/topic";
private static final int QOS = 1;
private static MqttClient mqttClient;
static {
try {
mqttClient = new MqttClient(BROKER_URL, CLIENT_ID, null);
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
mqttClient.connect(options);
logger.info("【MQTT】连接成功 -> broker: {}", BROKER_URL);
} catch (Exception e) {
logger.error("【MQTT】初始化失败", e);
}
}
public static void send(String topic, String message) {
try {
if (!mqttClient.isConnected()) {
mqttClient.reconnect();
logger.warn("【MQTT】连接已断开,已重新连接");
}
MqttMessage mqttMessage = new MqttMessage(message.getBytes());
mqttMessage.setQos(QOS);
mqttClient.publish(topic, mqttMessage);
logger.info("【MQTT】发送成功 -> topic: {}, payload: {}", topic, message);
} catch (Exception e) {
logger.error("【MQTT】发送失败 -> topic: {}, payload: {}", topic, message, e);
}
}
public static void send(String message) {
send(DEFAULT_TOPIC, message);
}
public static void close() {
try {
if (mqttClient != null && mqttClient.isConnected()) {
mqttClient.disconnect();
mqttClient.close();
logger.info("【MQTT】连接已关闭");
}
} catch (Exception e) {
logger.error("【MQTT】关闭连接失败", e);
}
}
}