导入依赖
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.fusesource.mqtt-client</groupId>
<artifactId>mqtt-client</artifactId>
<version>1.16</version>
</dependency>
创建消费者,生产者
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.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.nio.charset.StandardCharsets;
public class TestQueueConsumption {
public static void main(String[] args) throws MqttException, InterruptedException {
String tcpurl = "tcp://xxx:1883";
String clientId = "demoClientId";
String userName = "xxx";
String passWord = "xxx";
String Topic = "/demo/topic";
MemoryPersistence persistence = new MemoryPersistence();
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
options.setCleanSession(true);
options.setConnectionTimeout(10);
MqttClient client = new MqttClient(tcpurl, clientId, persistence);
client.setCallback(new DeviceMqttCallback());
client.connect(options);
client.subscribe(Topic);
MqttTopic topic = client.getTopic(Topic);
MqttMessage message = new MqttMessage("测试消息".getBytes(StandardCharsets.UTF_8));
message.setRetained(true);
topic.publish(message);
Thread.sleep(1000*30);
client.disconnect();
client.close();
}
}
回调方法
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
public class DeviceMqttCallback implements MqttCallback {
@Override
public void connectionLost(Throwable cause) {
System.out.println("connectionLost:" + cause.getMessage());
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println("receive: [topic]:" + topic + " [msg]:" + message.toString());
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("[isComplete]:" + token.isComplete() + " " + token.getTopics());
}
}