|
@@ -30,32 +30,38 @@ public class ExportTask extends Thread {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
for (;;) {
|
|
|
- ExportTaskEntity et = exportTaskService.findExportTaskToDispose();
|
|
|
- if (et == null) {
|
|
|
- Util.sleep(30);
|
|
|
- continue;
|
|
|
- }
|
|
|
- String cacheLock = "$_CACHE_LOCK:OE_EXPORT_TASK:" + et.getId();
|
|
|
- Boolean lock = redisClient.setIfAbsent(cacheLock, cacheLock, cacheLockTimeout);
|
|
|
- if (!lock) {
|
|
|
- continue;
|
|
|
- }
|
|
|
try {
|
|
|
- exportTaskService.startExportTask(et.getId());
|
|
|
- if (ExportTaskType.EXAM_DETAIL.equals(et.getType())) {
|
|
|
- examRecordDetails(et);
|
|
|
- } else if (ExportTaskType.SCORE_STATISTIC.equals(et.getType())) {
|
|
|
- examScores(et);
|
|
|
- } else if (ExportTaskType.EXAM_SCHEDULING.equals(et.getType())) {
|
|
|
- examScheduling(et);
|
|
|
- } else if (ExportTaskType.AUDIT.equals(et.getType())) {
|
|
|
- examAudit(et);
|
|
|
+ LOG.debug("ExportTask start");
|
|
|
+ ExportTaskEntity et = exportTaskService.findExportTaskToDispose();
|
|
|
+ if (et == null) {
|
|
|
+ LOG.debug("ExportTask sleeping");
|
|
|
+ Util.sleep(30);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String cacheLock = "$_CACHE_LOCK:OE_EXPORT_TASK:" + et.getId();
|
|
|
+ Boolean lock = redisClient.setIfAbsent(cacheLock, cacheLock, cacheLockTimeout);
|
|
|
+ if (!lock) {
|
|
|
+ LOG.debug("ExportTask get lock failed");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ exportTaskService.startExportTask(et.getId());
|
|
|
+ if (ExportTaskType.EXAM_DETAIL.equals(et.getType())) {
|
|
|
+ examRecordDetails(et);
|
|
|
+ } else if (ExportTaskType.SCORE_STATISTIC.equals(et.getType())) {
|
|
|
+ examScores(et);
|
|
|
+ } else if (ExportTaskType.EXAM_SCHEDULING.equals(et.getType())) {
|
|
|
+ examScheduling(et);
|
|
|
+ } else if (ExportTaskType.AUDIT.equals(et.getType())) {
|
|
|
+ examAudit(et);
|
|
|
+ }
|
|
|
+ exportTaskService.endExportTask(et.getId());
|
|
|
+ } finally {
|
|
|
+ redisClient.delete(cacheLock);
|
|
|
}
|
|
|
- exportTaskService.endExportTask(et.getId());
|
|
|
+ LOG.debug("ExportTask end");
|
|
|
} catch (Exception e) {
|
|
|
LOG.error("ExportTask error ", e);
|
|
|
- } finally {
|
|
|
- redisClient.delete(cacheLock);
|
|
|
}
|
|
|
}
|
|
|
}
|