作者 钟来

模块整理

... ... @@ -39,5 +39,22 @@ public class Topic {
this.payloadtype = payloadtype;
}
public String getSendMessageStrigFromTopic(Object msg)
{
switch (this.topicType)
{
case "POST_REQ":
return msg+"";
case "GET_REQ":
return "";
case "PUT_REQ":
return "";
case "READ_REQ":
return "";
default:
break;
}
return null;
}
}
... ...
... ... @@ -58,8 +58,7 @@ public class MqttCallback implements MqttCallbackExtended {
@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
Topic desttopic = TopicUtil.initTopic(s);
desttopic.setPayloadtype("POST_REQ");
desttopic.setTopicType("POST_REQ");
//接收到消息
StringBuffer buffer = new StringBuffer();
buffer.append("topic:");
... ... @@ -79,7 +78,6 @@ public class MqttCallback implements MqttCallbackExtended {
{
log.error("消息{},topic为空,不做解析");
log.error("消息《"+s+"》解析为空 》》》内容:\r\n"+buffer.toString());
terminalService.publish(TopicUtil.generateSendMessageTopic(topic),"0");
return;
}
... ... @@ -92,7 +90,7 @@ public class MqttCallback implements MqttCallbackExtended {
if(null == iotDevice)
{
log.info("设备{}不存在",topic.getClientid());
terminalService.publish(TopicUtil.generateSendMessageTopic(topic),"1");
terminalService.publish(TopicUtil.generateSendMessageTopic(desttopic),"1");
return;
}
if("ONLINE".equals(topic.getTopicType().toUpperCase()))
... ... @@ -115,7 +113,7 @@ public class MqttCallback implements MqttCallbackExtended {
}
if(null == dto)
{
terminalService.publish(TopicUtil.generateSendMessageTopic(topic),"2");
terminalService.publish(TopicUtil.generateSendMessageTopic(desttopic),"2");
return;
}
log.info("{} 解析到的dto【{}】",dto);
... ... @@ -127,7 +125,7 @@ public class MqttCallback implements MqttCallbackExtended {
dataPersistenceService.persistence(topic,dto);
terminalService.publish(TopicUtil.generateSendMessageTopic(desttopic),"2");
log.info("{}payload解析完成",s);
log.info("{} payload解析完成",s);
} catch (Exception e) {
log.error(s+"消息解析异常",e);
try {
... ... @@ -149,37 +147,10 @@ public class MqttCallback implements MqttCallbackExtended {
}
}
// public static org.apache.log4j.Logger getLoggerByName(String name) {
// // 生成新的Logger
// // 如果已經有了一個Logger實例返回現有的
// org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(name);
// // 清空Appender。特別是不想使用現存實例時一定要初期化
// logger.removeAllAppenders();
// // 設定Logger級別。
//// logger.setLevel(Level.DEBUG);
// // 設定是否繼承父Logger。
// // 默認為true。繼承root輸出。
// // 設定false後將不輸出root。
// logger.setAdditivity(true);
// // 生成新的Appender
// FileAppender appender = new RollingFileAppender();
// PatternLayout layout = new PatternLayout();
// // log的输出形式
// String conversionPattern = "%d{HH:mm:ss} [%p] -%m%n";
// layout.setConversionPattern(conversionPattern);
// appender.setLayout(layout);
// // log输出路径
// // 这里使用了环境变量[catalina.home],只有在tomcat环境下才可以取到
//// String tomcatPath = java.lang.System.getProperty("catalina.home");
// appender.setFile( "logs/" + name+"_"+ DateUtils.parseDateToStr("yyyyMMdd",new Date()) + ".log");
// // log的文字码
// appender.setEncoding("UTF-8");
// // true:在已存在log文件后面追加 false:新log覆盖以前的log
// appender.setAppend(true);
// // 适用当前配置
// appender.activateOptions();
// // 将新的Appender加到Logger中
// logger.addAppender(appender);
// return logger;
// }
public MqttCallback binldTerminalService(TerminalService terminalService)
{
this.terminalService = terminalService;
return this;
}
}
... ...
... ... @@ -78,7 +78,7 @@ public class TerminalService {
options.setConnectionTimeout(15);
//设置断开后重新连接
options.setAutomaticReconnect(true);
mqttclient.setCallback(mqttCallback);
mqttclient.setCallback(mqttCallback.binldTerminalService(this));
}
private void connect() throws MqttException {
... ...
... ... @@ -55,6 +55,7 @@ public class TopicUtil {
*/
public static String generateSendMessageTopic(Topic topic)
{
return "/"+generate(topic,"/");
}
... ...
... ... @@ -42,7 +42,7 @@ public class ClienNoticeService {
// CREATED: 只在put和replace方法清零过期时间
// ACCESSED: 在CREATED策略基础上增加, 在还没过期时get方法清零过期时间。
// 清零过期时间也就是重置过期时间,重新计算过期时间.
private static ExpiringMap<String, ClienConnection> clienConnectionMap = ExpiringMap.builder().maxSize(20000).expiration(5, TimeUnit.SECONDS)
private static ExpiringMap<String, ClienConnection> clienConnectionMap = ExpiringMap.builder().maxSize(20000).expiration(15, TimeUnit.SECONDS)
.asyncExpirationListener(new ExpirationListener<String, ClienConnection>() {
@Override
public void expired(String s, ClienConnection clienConnection) {
... ...
... ... @@ -49,7 +49,7 @@ mqtt:
mqtt_usernames: 6_WP,12_BPQ,10_TLJ,NWDB_2023,WLJ_1,YWB_A700E,12_ZNZY
#订阅的topic
topics: ADD_POST,ALL_POST,DB_TOPIC_DISTRIBUTE,GET/+,online,PUT_REQ/+,READ_REQ/+
sub_clientid: '+'
sub_clientid: '866838067732715'
topicconfig: "/{{roleid}}/{{username}}/{{clientid}}/{{payloadtype}}/{{topicType}}/{{messageid}}"
top_return_map: '{"PUT":"PUT_REQ","READ":"READ_REQ"}'
username: sysuser
... ... @@ -67,5 +67,5 @@ sys:
rocketmq:
#nameservice服务器地址(多个以英文逗号隔开)
name-server: 47.115.144.179:9876
send-topic: lh-mqtt-service-deviceCommand-test1
send-topic: lh-mqtt-service-deviceCommand-test
send-tag: 1
\ No newline at end of file
... ...