public class CrossClient {
private static final String USERNAME = "admin";//用户名
private static final String PASSWORD = "password";//密码
public void crossSensationLink(){
//用于测试的topic
final String topic = "bvip_notify";
//接入服务器域名
String targetServer = ConfigCacheUtil.getConf("crossClient").getValue();
String broker = "tcp://" + targetServer;
String clientId = UUID.randomUUID().toString();
// String clientId = "123456789123451";
MemoryPersistence persistence = new MemoryPersistence();
try {
final MqttClient mqttClient = new MqttClient(broker,clientId,persistence);
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
final CrossCameraService crossCameraService = (CrossCameraService) SpringUtil
.getBean("crossCameraServiceImpl");
final CrossBorderService crossBorderService = (CrossBorderService) SpringUtil
.getBean("CrossBorderServiceImpl");
//MQTT 3.1.1
mqttConnectOptions.setMqttVersion(4);
//设置是否自动重连
mqttConnectOptions.setAutomaticReconnect(true);
mqttConnectOptions.setUserName(USERNAME);
mqttConnectOptions.setPassword(PASSWORD.toCharArray());
mqttConnectOptions.setKeepAliveInterval(80);
mqttClient.connect(mqttConnectOptions);
mqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable throwable) {
System.out.println("连接失败,原因:" + throwable);
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
System.out.println(System.currentTimeMillis() + "接收到消息,来自Topic [" + s+ "] ,内容是:["+ new String(mqttMessage.getPayload(),"UTF-8") + "],num");
//过滤是不是json数据,是不是报警事件
String corssBorderJson = new String(mqttMessage.getPayload(), "UTF-8");
HttpServletRequest request = getRequest();
JSONObject param = null;
try {
param = JSONObject. fromObject(corssBorderJson);
try {
String taskType = param.get("TaskType").toString();
if (taskType.equals("AlarmEvent")){
crossCameraService.saveCrossCamers(param);
// String data = crossBorderService.querySound(param);
// crossBorderService.login(data, request);
}
}catch (Exception e){
System.out.println("不是报警事件数据");
}
}catch (Exception e){
System.out.println("不是json格式数据");
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
//如果是qos 0消息 token.resp是没有回复的
System.out.println("消息发送成功!"
+ ((iMqttDeliveryToken == null || iMqttDeliveryToken.getResponse() == null)? "null" : iMqttDeliveryToken.getResponse().getKey()));
}
});
mqttClient.subscribe(topic);
System.out.println(System.currentTimeMillis() + "连接成功:---");
}catch (Exception e){
e.printStackTrace();
System.out.println("连接失败");
}
}
}