mqtt的ClientPub

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值