|
|
|
@ -48,7 +48,8 @@ public class JobScheduleHelper { |
|
|
|
|
|
|
|
|
|
while (!toStop) { |
|
|
|
|
|
|
|
|
|
// 匹配任务
|
|
|
|
|
// 扫描任务
|
|
|
|
|
long start = System.currentTimeMillis(); |
|
|
|
|
Connection conn = null; |
|
|
|
|
PreparedStatement preparedStatement = null; |
|
|
|
|
try { |
|
|
|
@ -143,10 +144,11 @@ public class JobScheduleHelper { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
long cost = System.currentTimeMillis()-start; |
|
|
|
|
|
|
|
|
|
// 随机休眠1s内
|
|
|
|
|
// next second, align second
|
|
|
|
|
try { |
|
|
|
|
TimeUnit.MILLISECONDS.sleep(500+new Random().nextInt(500)); |
|
|
|
|
TimeUnit.MILLISECONDS.sleep(cost<1000?(1000-cost):100); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
if (!toStop) { |
|
|
|
|
logger.error(e.getMessage(), e); |
|
|
|
@ -167,6 +169,7 @@ public class JobScheduleHelper { |
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
|
|
// align second
|
|
|
|
|
try { |
|
|
|
|
TimeUnit.MILLISECONDS.sleep(System.currentTimeMillis()%1000 ); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
@ -178,6 +181,7 @@ public class JobScheduleHelper { |
|
|
|
|
int lastSecond = -1; |
|
|
|
|
while (!toStop) { |
|
|
|
|
|
|
|
|
|
long start = System.currentTimeMillis(); |
|
|
|
|
try { |
|
|
|
|
// second data
|
|
|
|
|
List<Integer> ringItemData = new ArrayList<>(); |
|
|
|
@ -199,7 +203,7 @@ public class JobScheduleHelper { |
|
|
|
|
} |
|
|
|
|
lastSecond = nowSecond; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ring trigger
|
|
|
|
|
logger.debug(">>>>>>>>>>> xxl-job, time-ring beat : " + nowSecond + " = " + Arrays.asList(ringItemData) ); |
|
|
|
|
if (ringItemData!=null && ringItemData.size()>0) { |
|
|
|
|
// do trigger
|
|
|
|
@ -215,9 +219,11 @@ public class JobScheduleHelper { |
|
|
|
|
logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
long cost = System.currentTimeMillis() - start; |
|
|
|
|
|
|
|
|
|
// next second, align second
|
|
|
|
|
try { |
|
|
|
|
TimeUnit.SECONDS.sleep(1); |
|
|
|
|
TimeUnit.MILLISECONDS.sleep(1000-cost); |
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
if (!toStop) { |
|
|
|
|
logger.error(e.getMessage(), e); |
|
|
|
|