MQTT文档

java代码示例

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();
        }

    }
}