目录
1.根据需要自动回复某些主题
2.调用doReply方法进行自动回复
1.根据需要自动回复某些主题
根据主题判断,哪些主题是需要自动回复的,比如设备登录,需要自动回复。
2.调用doReply方法进行自动回复(代码不一定全部正确,请按自己的需求来更改逻辑)
//如果主题是登录,则回复登录内容
if (topic.contains("Login")){
System.out.println("设备"+topics[2]+"正在登录..");
String replyTopic = topic.replace("Post","PostRsp");
JSONObject loginJsonObj = JSONObject.parseObject(msg);
//回复标识
String identifier = loginJsonObj.getString("identifier");
String stationno = loginJsonObj.getString("stationno");
String stationname = loginJsonObj.getString("stationname");
Integer mi = loginJsonObj.getInteger("mi");
Integer time = loginJsonObj.getInteger("time");
Map<String, Object>resMap = new HashMap<>();
resMap.put("identifier",identifier);
resMap.put("stationno",stationno);
resMap.put("stationname",stationname);
resMap.put("mi",mi+1);
resMap.put("time",time);
resMap.put("result",1);
TopicPayload topicPayload = new TopicPayload();
topicPayload.setPayload(JSONObject.toJSONBytes(resMap));
topicPayload.setTopic(replyTopic);
String topicss[] = new String[1];
topicss[0]= replyTopic;
return Flux.just(deviceMessage).flatMap(s->{
return doReply(context,topicPayload).flatMapMany(ss->{
return Flux.empty().then().thenReturn(ss);
}).then().thenReturn(s);
});
}
写完这些代码之后,打包,上传到自己的jetlinks平台,即可调用。