diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/enums/ActionPartSpeechEnum.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/enums/ActionPartSpeechEnum.java index 42a9602..8bde375 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/enums/ActionPartSpeechEnum.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/enums/ActionPartSpeechEnum.java @@ -522,11 +522,17 @@ public enum ActionPartSpeechEnum implements IChinesePartSpeech{ }else{ action.getTime().setTime(key, false); } - int index = action.getNoTimeAsk().indexOf(key); - String v = action.getNoTimeAsk().substring(0, index); - v += action.getNoTimeAsk().substring(index + key.length()); - //action.setNoTimeAsk(action.getNoTimeAsk().substring(action.getNoTimeAsk().indexOf(key) + key.length())); - action.setNoTimeAsk(v); + if(StringUtils.isNotEmpty(action.getNoTimeAsk())){ + int index = action.getNoTimeAsk().indexOf(key); + if(index >= 0){ + String v = action.getNoTimeAsk().substring(0, index); + v += action.getNoTimeAsk().substring(index + key.length()); + //action.setNoTimeAsk(action.getNoTimeAsk().substring(action.getNoTimeAsk().indexOf(key) + key.length())); + action.setNoTimeAsk(v); + } + + } + return action; } },//LAC TIME diff --git a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java index 7897876..a031aad 100644 --- a/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java +++ b/iot-common/iot-third/src/main/java/com/qiuguo/iot/third/service/TongYiXinChenService.java @@ -20,6 +20,7 @@ import org.springframework.util.CollectionUtils; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; +import javax.annotation.PreDestroy; import javax.annotation.Resource; import java.time.Duration; import java.util.*; @@ -38,10 +39,18 @@ public class TongYiXinChenService implements ITongYi{ /** * 超过该时间还未发送消息的将被剔除 */ - static Long TIME_OUT = 60000L; + static Long TIME_OUT = 600000L; + + Boolean runClean = true; public TongYiXinChenService(){ - //checkOutTime().subscribeOn(Schedulers.newSingle("tongyi-xinchen-clean")).subscribe(); + Mono.just(true).subscribeOn(Schedulers.newSingle("tongyi-xinchen-clean")).map( + b -> { + checkOutTime(); + return b; + } + + ).subscribe(); } @Override @@ -62,10 +71,10 @@ public class TongYiXinChenService implements ITongYi{ }); } - private Mono checkOutTime(){ + private void checkOutTime(){ log.info("开启清理内存数据任务"); List keys = new ArrayList<>(); - while(true){ + while(runClean){ for (String key: qianwenGroup.keySet() ) { AliYunXingChen aliYunXingChen = qianwenGroup.get(key); @@ -74,7 +83,10 @@ public class TongYiXinChenService implements ITongYi{ keys.add(key); } } - log.info("需要清除内存中:{}数据", keys.size()); + if(keys.size() > 0){ + log.info("内存数据量{},需要清除内存中:{}数据", qianwenGroup.size(), keys.size()); + } + for(String key: keys){ qianwenGroup.remove(key); } @@ -85,6 +97,10 @@ public class TongYiXinChenService implements ITongYi{ log.info("定时清理内存中数据异常{}", e); } } + } + @PreDestroy + public void stopRunClean(){ + runClean = false; } }