pull/19/head
James-hp 5 years ago
parent 670740979c
commit e0cb765540

@ -0,0 +1,9 @@
package com.ruoyi.common.mqtt.domain;
import java.io.Serializable;
public class MqttBody implements Serializable {
private int code;
private String msg;
private Object body;
}

@ -0,0 +1,10 @@
package com.ruoyi.common.mqtt.domain;
import java.io.Serializable;
public class MqttHead implements Serializable {
private int type;
private String topic;
private MqttBody body;
}

@ -0,0 +1,38 @@
package com.ruoyi.common.mqtt.service;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Callback implements MqttCallback {
private static final Logger log = LoggerFactory.getLogger(Callback.class);
/**
* MQTT
*/
@Override
public void connectionLost(Throwable throwable) {
log.info("断开了MQTT连接 {}", throwable.getMessage());
log.error(throwable.getMessage(), throwable);
}
/**
* publish
*/
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
log.info("发布消息成功");
}
/**
* subscribe
*/
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
// TODO 此处可以将订阅得到的消息进行业务处理、数据存储
log.info("收到来自 " + topic + " 的消息:{}", new String(message.getPayload()));
}
}

@ -0,0 +1,123 @@
package com.ruoyi.common.mqtt.service;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.stereotype.Component;
import org.eclipse.paho.client.mqttv3.MqttCallback;
@Component
public class MqttService {
private String HOST = "tcp://127.0.0.1:1883"; //mqtt服务器的地址和端口号
private final String clientId = "DC" + (int) (Math.random() * 100000000);
private MqttClient mqttClient;
/**
* connectmqtt
*
* @param userName
* @param passWord
* @param mqttCallback
**/
public void setMqttClient(String userName, String passWord, MqttCallback mqttCallback) throws MqttException {
MqttConnectOptions options = mqttConnectOptions(userName, passWord);
if (mqttCallback == null) {
mqttClient.setCallback(new Callback());
} else {
mqttClient.setCallback(mqttCallback);
}
mqttClient.connect(options);
}
/**
* MQTT
*/
private MqttConnectOptions mqttConnectOptions(String userName, String passWord) throws MqttException {
mqttClient = new MqttClient(HOST, clientId, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
options.setConnectionTimeout(10);///默认30
options.setAutomaticReconnect(true);//默认false
options.setCleanSession(false);//默认true
//options.setKeepAliveInterval(20);//默认60
return options;
}
/**
* MQTT
*/
public void close() throws MqttException {
mqttClient.close();
mqttClient.disconnect();
}
/**
* qos1
*
* @param topic:
* @param msg
*/
public void pub(String topic, String msg) throws MqttException {
MqttMessage mqttMessage = new MqttMessage();
//mqttMessage.setQos(2);
mqttMessage.setPayload(msg.getBytes());
MqttTopic mqttTopic = mqttClient.getTopic(topic);
MqttDeliveryToken token = mqttTopic.publish(mqttMessage);
token.waitForCompletion();
}
/**
*
*
* @param topic:
* @param msg:
* @param qos: Qos012
*/
public void pub(String topic, String msg, int qos) throws MqttException {
MqttMessage mqttMessage = new MqttMessage();
mqttMessage.setQos(qos);
mqttMessage.setPayload(msg.getBytes());
MqttTopic mqttTopic = mqttClient.getTopic(topic);
MqttDeliveryToken token = mqttTopic.publish(mqttMessage);
token.waitForCompletion();
}
/**
* Qos1
*
* @param topic
*/
public void sub(String topic) throws MqttException {
mqttClient.subscribe(topic);
}
/**
* Qos
*
* @param topic
* @param qos 012
*/
public void sub(String topic, int qos) throws MqttException {
mqttClient.subscribe(topic, qos);
}
/**
* main
*/
public static void main(String[] args) throws MqttException {
MqttService mqttConnect = new MqttService();
mqttConnect.setMqttClient("admin", "public", new Callback());
mqttConnect.pub("com/iot/init", "Mr.Qu" + (int) (Math.random() * 100000000));
//mqttConnect.sub("com/iot/init");
}
/**
* main
*/
public static void main1(String[] args) throws MqttException {
MqttService mqttConnect = new MqttService();
mqttConnect.setMqttClient("admin", "public", new Callback());
mqttConnect.pub("com/iot/init", "Mr.Qu" + (int) (Math.random() * 100000000));
//mqttConnect.sub("com/iot/init");
}
}

@ -0,0 +1,12 @@
package com.ruoyi.common.mqtt.service;
import org.eclipse.paho.client.mqttv3.MqttException;
public class ss {
public static void main(String[] args) throws MqttException {
MqttService mqttConnect = new MqttService();
mqttConnect.setMqttClient("admin", "public", new Callback());
mqttConnect.pub("com/iot/init", "Mr.Qu" + (int) (Math.random() * 100000000));
//mqttConnect.sub("com/iot/init");
}
}

@ -1,7 +0,0 @@
package com.ruoyi.common.redis.service;
import org.springframework.stereotype.Component;
@Component
public class MqttService {
}
Loading…
Cancel
Save