优化单次解持久化保存
This commit is contained in:
parent
c8d1e125da
commit
6873bf04fa
@ -1,5 +1,6 @@
|
|||||||
package com.imdroid.sideslope.service;
|
package com.imdroid.sideslope.service;
|
||||||
|
|
||||||
|
import com.imdroid.common.util.ThreadManager;
|
||||||
import com.imdroid.secapi.dto.GnssSingleData;
|
import com.imdroid.secapi.dto.GnssSingleData;
|
||||||
import com.imdroid.secapi.dto.GnssSingleDataMapper;
|
import com.imdroid.secapi.dto.GnssSingleDataMapper;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -48,12 +49,20 @@ public class GnssSingleBufferServiceImpl implements GnssSingleBufferService {
|
|||||||
try {
|
try {
|
||||||
List<GnssSingleData> batchList = new ArrayList<>(buffer);
|
List<GnssSingleData> batchList = new ArrayList<>(buffer);
|
||||||
buffer.clear();
|
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) {
|
} catch (Exception e) {
|
||||||
logger.error("批量插入数据失败", e);
|
logger.error("线程创建失败", e);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user