<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
// 引入必要的MQTT客户端库
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
public class MqttTest {
public static void main(String[] args) {
String broker = "tcp://localhost:1883";
String clientId = "JavaSample";
String topic = "test/topic";
try {
MqttClient sampleClient = new MqttClient(broker, clientId);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
System.out.println("Connecting to broker: " + broker);
sampleClient.connect(connOpts);
System.out.println("Connected");
// Implementing callback method to handle messages
sampleClient.setCallback(new MqttCallback() {
public void connectionLost(Throwable cause) {
// Called when the client lost the connection to the broker
}
public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println("Message arrived: " + topic + " : " + new String(message.getPayload()));
}
public void deliveryComplete(IMqttDeliveryToken token) {
// Called when a outgoing publish is complete
}
});
System.out.println("Subscribing to topic \"" + topic + "\"");
sampleClient.subscribe(topic);
// Publish a message
System.out.println("Publishing message to topic \"" + topic + "\"");
MqttMessage message = new MqttMessage("Hello MQTT".getBytes());
message.setQos(2);
sampleClient.publish(topic, message);
System.out.println("Message published");
// Give it some time to process the published message
Thread.sleep(5000);
sampleClient.disconnect();
System.out.println("Disconnected");
} catch(MqttException me) {
System.out.println("reason " + me.getReasonCode());
System.out.println("msg " + me.getMessage());
System.out.println("loc " + me.getLocalizedMessage());
System.out.println("cause " + me.getCause());
System.out.println("excep " + me);
me.printStackTrace();
} catch (InterruptedException ie) {
System.out.println("Thread interrupted");
}
}
}