增加星尘聊天超时10分钟清楚内存 缓存

This commit is contained in:
wulin 2023-11-22 10:54:41 +08:00
parent 74fe812935
commit 2bd1d6815b
2 changed files with 32 additions and 10 deletions

View File

@ -522,11 +522,17 @@ public enum ActionPartSpeechEnum implements IChinesePartSpeech{
}else{ }else{
action.getTime().setTime(key, false); action.getTime().setTime(key, false);
} }
int index = action.getNoTimeAsk().indexOf(key); if(StringUtils.isNotEmpty(action.getNoTimeAsk())){
String v = action.getNoTimeAsk().substring(0, index); int index = action.getNoTimeAsk().indexOf(key);
v += action.getNoTimeAsk().substring(index + key.length()); if(index >= 0){
//action.setNoTimeAsk(action.getNoTimeAsk().substring(action.getNoTimeAsk().indexOf(key) + key.length())); String v = action.getNoTimeAsk().substring(0, index);
action.setNoTimeAsk(v); v += action.getNoTimeAsk().substring(index + key.length());
//action.setNoTimeAsk(action.getNoTimeAsk().substring(action.getNoTimeAsk().indexOf(key) + key.length()));
action.setNoTimeAsk(v);
}
}
return action; return action;
} }
},//LAC TIME },//LAC TIME

View File

@ -20,6 +20,7 @@ import org.springframework.util.CollectionUtils;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import reactor.core.scheduler.Schedulers; import reactor.core.scheduler.Schedulers;
import javax.annotation.PreDestroy;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.Duration; import java.time.Duration;
import java.util.*; 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(){ 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 @Override
@ -62,10 +71,10 @@ public class TongYiXinChenService implements ITongYi{
}); });
} }
private Mono<Void> checkOutTime(){ private void checkOutTime(){
log.info("开启清理内存数据任务"); log.info("开启清理内存数据任务");
List<String> keys = new ArrayList<>(); List<String> keys = new ArrayList<>();
while(true){ while(runClean){
for (String key: qianwenGroup.keySet() for (String key: qianwenGroup.keySet()
) { ) {
AliYunXingChen aliYunXingChen = qianwenGroup.get(key); AliYunXingChen aliYunXingChen = qianwenGroup.get(key);
@ -74,7 +83,10 @@ public class TongYiXinChenService implements ITongYi{
keys.add(key); keys.add(key);
} }
} }
log.info("需要清除内存中:{}数据", keys.size()); if(keys.size() > 0){
log.info("内存数据量{},需要清除内存中:{}数据", qianwenGroup.size(), keys.size());
}
for(String key: keys){ for(String key: keys){
qianwenGroup.remove(key); qianwenGroup.remove(key);
} }
@ -85,6 +97,10 @@ public class TongYiXinChenService implements ITongYi{
log.info("定时清理内存中数据异常{}", e); log.info("定时清理内存中数据异常{}", e);
} }
} }
}
@PreDestroy
public void stopRunClean(){
runClean = false;
} }
} }