1
1
package com .openquartz .easyfile .starter .trigger .handler ;
2
2
3
+ import java .util .Comparator ;
3
4
import java .util .List ;
4
5
import java .util .Random ;
5
6
import java .util .concurrent .ScheduledThreadPoolExecutor ;
6
7
import java .util .concurrent .TimeUnit ;
8
+
7
9
import lombok .extern .slf4j .Slf4j ;
8
10
import org .springframework .beans .factory .InitializingBean ;
9
11
import com .openquartz .easyfile .common .response .DownloadTriggerEntry ;
@@ -31,45 +33,45 @@ public class ScheduleTriggerAsyncFileHandler extends DatabaseAsyncFileHandlerAda
31
33
private final ScheduledThreadPoolExecutor reaperScheduleExecutorService ;
32
34
33
35
private ScheduledThreadPoolExecutor init (ScheduleAsyncHandlerProperties handlerProperties ,
34
- BaseDefaultDownloadRejectExecutionHandler rejectHandler ) {
36
+ BaseDefaultDownloadRejectExecutionHandler rejectHandler ) {
35
37
return new ScheduledThreadPoolExecutor (handlerProperties .getThreadPoolCoreSize (),
36
- new ThreadFactoryBuilder ()
37
- .setNameFormat (handlerProperties .getThreadPoolThreadPrefix () + "-thread-%d" )
38
- .build (),
39
- rejectHandler );
38
+ new ThreadFactoryBuilder ()
39
+ .setNameFormat (handlerProperties .getThreadPoolThreadPrefix () + "-thread-%d" )
40
+ .build (),
41
+ rejectHandler );
40
42
}
41
43
42
44
public ScheduleTriggerAsyncFileHandler (
43
- EasyFileDownloadProperties downloadProperties ,
44
- UploadService uploadService ,
45
- DownloadStorageService storageService ,
46
- DownloadTriggerService triggerService ,
47
- ScheduleAsyncHandlerProperties scheduleAsyncHandlerProperties ,
48
- BaseDefaultDownloadRejectExecutionHandler rejectExecutionHandler ) {
45
+ EasyFileDownloadProperties downloadProperties ,
46
+ UploadService uploadService ,
47
+ DownloadStorageService storageService ,
48
+ DownloadTriggerService triggerService ,
49
+ ScheduleAsyncHandlerProperties scheduleAsyncHandlerProperties ,
50
+ BaseDefaultDownloadRejectExecutionHandler rejectExecutionHandler ) {
49
51
super (downloadProperties , uploadService , storageService , triggerService , scheduleAsyncHandlerProperties );
50
52
this .triggerService = triggerService ;
51
53
this .handlerProperties = scheduleAsyncHandlerProperties ;
52
54
this .scheduleExecutorService = init (scheduleAsyncHandlerProperties , rejectExecutionHandler );
53
55
// reaper
54
56
this .reaperScheduleExecutorService = new ScheduledThreadPoolExecutor (
55
- handlerProperties .getReaperTheadPoolCoreSize (),
56
- new ThreadFactoryBuilder ()
57
- .setNameFormat (handlerProperties .getReaperThreadPoolThreadPrefix () + "-thread-%d" )
58
- .build (),
59
- rejectExecutionHandler );
57
+ handlerProperties .getReaperTheadPoolCoreSize (),
58
+ new ThreadFactoryBuilder ()
59
+ .setNameFormat (handlerProperties .getReaperThreadPoolThreadPrefix () + "-thread-%d" )
60
+ .build (),
61
+ rejectExecutionHandler );
60
62
}
61
63
62
64
public void doTrigger () {
63
65
List <DownloadTriggerEntry > registerIdList = triggerService
64
- .getTriggerRegisterId (handlerProperties .getLookBackHours (), handlerProperties .getMaxTriggerCount (),
65
- handlerProperties .getTriggerOffset ());
66
+ .getTriggerRegisterId (handlerProperties .getLookBackHours (), handlerProperties .getMaxTriggerCount (),
67
+ handlerProperties .getTriggerOffset ());
66
68
doActualTrigger (registerIdList );
67
69
}
68
70
69
71
public void doReaperTrigger () {
70
72
List <DownloadTriggerEntry > registerIdList = triggerService
71
- .getTriggerRegisterId (handlerProperties .getLookBackHours (), handlerProperties .getMaxTriggerCount (),
72
- handlerProperties .getMinReaperSeconds (), handlerProperties .getTriggerOffset ());
73
+ .getTriggerRegisterId (handlerProperties .getLookBackHours (), handlerProperties .getMaxTriggerCount (),
74
+ handlerProperties .getMinReaperSeconds (), handlerProperties .getTriggerOffset ());
73
75
doActualTrigger (registerIdList );
74
76
}
75
77
@@ -81,7 +83,10 @@ private void doActualTrigger(List<DownloadTriggerEntry> registerIdList) {
81
83
log .info ("[ScheduleTriggerAsyncFileHandler#doTrigger] end....." );
82
84
return ;
83
85
}
84
- registerIdList .stream ().sorted ().forEach (this ::doTrigger );
86
+ registerIdList
87
+ .stream ()
88
+ .sorted (Comparator .comparing (DownloadTriggerEntry ::getRegisterId ))
89
+ .forEach (this ::doTrigger );
85
90
} catch (Exception ex ) {
86
91
log .error ("[ScheduleTriggerAsyncFileHandler#doTrigger] error!" , ex );
87
92
}
@@ -94,12 +99,12 @@ public void afterPropertiesSet() {
94
99
super .afterPropertiesSet ();
95
100
double initDelaySeconds = new Random (1 ).nextDouble () * handlerProperties .getSchedulePeriod ();
96
101
scheduleExecutorService
97
- .scheduleAtFixedRate (this ::doTrigger , (int ) initDelaySeconds , handlerProperties .getSchedulePeriod (),
98
- TimeUnit .SECONDS );
102
+ .scheduleAtFixedRate (this ::doTrigger , (int ) initDelaySeconds , handlerProperties .getSchedulePeriod (),
103
+ TimeUnit .SECONDS );
99
104
// do reaper
100
105
reaperScheduleExecutorService
101
- .scheduleAtFixedRate (this ::doReaperTrigger , (int ) initDelaySeconds , handlerProperties .getSchedulePeriod (),
102
- TimeUnit .SECONDS );
106
+ .scheduleAtFixedRate (this ::doReaperTrigger , (int ) initDelaySeconds , handlerProperties .getSchedulePeriod (),
107
+ TimeUnit .SECONDS );
103
108
}
104
109
105
110
}
0 commit comments