优化单次解持久化保存
This commit is contained in:
parent
c8d1e125da
commit
6873bf04fa
@ -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);
|
||||
|
||||
// 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);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user