优化单次解持久化保存

This commit is contained in:
fengyarnom 2024-11-06 16:21:16 +08:00
parent c8d1e125da
commit 6873bf04fa

View File

@ -1,5 +1,6 @@
package com.imdroid.sideslope.service;
import com.imdroid.common.util.ThreadManager;
import com.imdroid.secapi.dto.GnssSingleData;
import com.imdroid.secapi.dto.GnssSingleDataMapper;
import org.slf4j.Logger;
@ -48,12 +49,20 @@ public class GnssSingleBufferServiceImpl implements GnssSingleBufferService {
try {
List<GnssSingleData> batchList = new ArrayList<>(buffer);
buffer.clear();
// 由于每秒写数据库操作频繁这里采用批量保存的方式
saveBatch(batchList);
logger.debug("批量插入{}条数据成功", batchList.size());
// saveBatch 会导致同步阻塞操作
// 数据库操作异步执行不能阻塞 addData 方法
ThreadManager.getSingleThreadPool("gnss-data-save").submit(() -> {
try {
saveBatch(batchList);
logger.debug("批量插入{}条数据成功", batchList.size());
} catch (Exception e) {
logger.error("批量插入数据失败", e);
}
});
} catch (Exception e) {
logger.error("批量插入数据失败", e);
logger.error("线程创建失败", e);
throw e;
}
}