Java代码示例可参考mqtt_demo-smartmetering.top.zip
maven
依赖文件pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mqtt_demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</project>
Mqtt.java
连接逻辑
package com.example;
import org.eclipse.paho.client.mqttv3.*;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.util.UUID;
public class Mqtt {
//TODO 将这里的用户名、密码、topic替换成自己的
private static final String MQTT_USERNAME="xxxx";
private static final String MQTT_PASSWORD="xxxx";
private static final String MQTT_TOPIC="xxxx";
private static final String MQTT_ADDR="ssl://www.smartmetering.top:8883";
public static void main(String[] args) throws Exception {
String clientID = UUID.randomUUID().toString();
final MqttClient mqttClient = new MqttClient(MQTT_ADDR, clientID);
final MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(false);
options.setKeepAliveInterval(10);
options.setUserName(MQTT_USERNAME);
options.setPassword(MQTT_PASSWORD.toCharArray());
connect(mqttClient, options);
mqttClient.setCallback(new MqttCallback() {
public void connectionLost(Throwable cause) {
System.out.println("connection lost");
while (!mqttClient.isConnected()){
try {
Thread.sleep(3000);
}catch (Exception e){
e.printStackTrace();
}
connect(mqttClient, options);
}
}
public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println(message.toString());
}
public void deliveryComplete(IMqttDeliveryToken token) {
}
});
}
private static void connect(MqttClient mqttClient, MqttConnectOptions options) {
try {
mqttClient.connect(options);
mqttClient.subscribe(MQTT_TOPIC);
System.out.printf("connect sucess, addr: %s, topic:%s \n", MQTT_ADDR, MQTT_TOPIC);
}catch (Exception e){
e.printStackTrace();
}
}
}