mqtt的ClientPub

来源:互联网 发布:照片打印软件 编辑:程序博客网 时间:2024/06/13 05:15
package com.demo.mqtt;


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;


import com.ibm.mqtt.MqttClient;
import com.ibm.mqtt.MqttException;
import com.ibm.mqtt.MqttNotConnectedException;
import com.ibm.mqtt.MqttPersistenceException;
import com.ibm.mqtt.MqttSimpleCallback;


public class ClientPub {
private final static String CONNECTION_STRING = "tcp://123.57.81.91:1883";
private final static boolean CLEAN_START = true;
private final static short KEEP_ALIVE = 30;// 低耗网络,但是又需要及时获取数据,心跳30s
private final static String CLIENT_ID = "clientPub11";

private static Map<String, MqttClient> map = new HashMap<String, MqttClient>();


public ClientPub() {


}

public MqttClient createConn(String ip) {
MqttClient mqttClient = null;
if(map.isEmpty() || !map.containsKey(CLIENT_ID + ip)) {
try {
mqttClient = new MqttClient("tcp://" + ip + ":1883");
map.put(CLIENT_ID + ip, mqttClient);
} catch (MqttException e) {
e.printStackTrace();
}
} else {
mqttClient = map.get(CLIENT_ID + ip);
}
if(mqttClient == null || !mqttClient.isConnected()) {
try {
mqttClient.connect(CLIENT_ID + ip, CLEAN_START, KEEP_ALIVE);
} catch (MqttException e) {
e.printStackTrace();
}
}
return mqttClient;
}

public void publishMessage(String topic, String content, int qos, MqttClient mqttClient) {
try {
mqttClient.publish(topic, content.getBytes(), qos, false);
} catch (MqttNotConnectedException e) {
e.printStackTrace();
} catch (MqttPersistenceException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (MqttException e) {
e.printStackTrace();
}
}


public void closeConn() {
for(Entry<String, MqttClient> entry : map.entrySet()) {
MqttClient mqttClient = entry.getValue();
mqttClient.terminate();
}
}

public static void main(String[] args) throws MqttException, InterruptedException {
ClientPub clientPub = new ClientPub();
MqttClient mqttClient = clientPub.createConn("123.57.81.91");
clientPub.publishMessage("user/2", "this is a test", 2, mqttClient);
// clientPub.publishMessage("SECMSGNOTIFYNEW/Topic1", "this is a test2", 2, mqttClient);
// clientPub.closeConn();
Thread.sleep(1000);
clientPub.closeConn();
}


}
0 0
原创粉丝点击