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