初学java笔记, 仅针对定时扫描 修复历史数据功能一点
- 因为历史数据修复功能很复杂,所以不能频繁扫描影响先有功能,设定10分钟一次
- 每次扫描要限定数量,比如100个
- 扫描的数据保证不重复扫描之前的单子,此处注意的是中途报错无法完成的情况,需要建立一个缓存errorDataList 来保存无法完成的单子。 lastDataList是上一次扫描无法完成的单子
- 留个清除缓存的功能
if (qqList != null && !qqList.isEmpty()) {
// 排除出错数据
for (Iterator<Map<String, String>> iterator = qqList.iterator(); iterator.hasNext();) {
Map<String, String> attr = iterator.next();
String qqId = attr.get("ID");
if (lastDataList.contains(qqId)) {
iterator.remove();
errorDataList.add(qqId);
continue;
}
if (errorDataList.contains(qqId)) {
iterator.remove();
}
}
lastDataList.clear();
log.info("qq without xx number: " + qqList.size());
// 每次截取10个
if (qqList.size() > 10) {
List<Map<String, String>> subList = qqList.subList(0, 10);
lastDataList.addAll(subList.stream().map(p -> p.get("ID")).collect(Collectors.toList()));
createXx(subList);
}
else {
lastDataList.addAll(qqList.stream().map(p -> p.get("ID")).collect(Collectors.toList()));
createXx(qqList);
}
}
else if (qqList == null) {
log.info("qq without xx number: 0");
}