xuxueli před 6 roky
rodič
revize
19d1ac2ec2

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java Zobrazit soubor

58
 
58
 
59
                         // tx start
59
                         // tx start
60
 
60
 
61
-                        // 1、查询JOB:"下次调度30s内"
62
-                        long maxNextTime = System.currentTimeMillis() + 30000;
61
+                        // 1、预读10s内调度任务
62
+                        long maxNextTime = System.currentTimeMillis() + 10000;
63
                         long nowTime = System.currentTimeMillis();
63
                         long nowTime = System.currentTimeMillis();
64
                         List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(maxNextTime);
64
                         List<XxlJobInfo> scheduleList = XxlJobAdminConfig.getAdminConfig().getXxlJobInfoDao().scheduleJobQuery(maxNextTime);
65
                         if (scheduleList!=null && scheduleList.size()>0) {
65
                         if (scheduleList!=null && scheduleList.size()>0) {

+ 11 - 18
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java Zobrazit soubor

189
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_id")+I18nUtil.getString("system_not_found")) );
189
 			return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_id")+I18nUtil.getString("system_not_found")) );
190
 		}
190
 		}
191
 
191
 
192
-		// next trigger time
192
+		// next trigger time (10s后生效,避开预读周期)
193
 		long nextTriggerTime = 0;
193
 		long nextTriggerTime = 0;
194
-		try {
195
-			nextTriggerTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date()).getTime();
196
-		} catch (ParseException e) {
197
-			logger.error(e.getMessage(), e);
198
-			return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
194
+		if (exists_jobInfo.getTriggerStatus() == 1) {
195
+			try {
196
+				nextTriggerTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + 10000)).getTime();
197
+			} catch (ParseException e) {
198
+				logger.error(e.getMessage(), e);
199
+				return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
200
+			}
199
 		}
201
 		}
200
 
202
 
201
 		exists_jobInfo.setJobGroup(jobInfo.getJobGroup());
203
 		exists_jobInfo.setJobGroup(jobInfo.getJobGroup());
234
 	public ReturnT<String> start(int id) {
236
 	public ReturnT<String> start(int id) {
235
 		XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
237
 		XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
236
 
238
 
237
-		// next trigger time
239
+		// next trigger time (10s后生效,避开预读周期)
238
 		long nextTriggerTime = 0;
240
 		long nextTriggerTime = 0;
239
 		try {
241
 		try {
240
-			nextTriggerTime = new CronExpression(xxlJobInfo.getJobCron()).getNextValidTimeAfter(new Date()).getTime();
242
+			nextTriggerTime = new CronExpression(xxlJobInfo.getJobCron()).getNextValidTimeAfter(new Date(System.currentTimeMillis() + 10000)).getTime();
241
 		} catch (ParseException e) {
243
 		} catch (ParseException e) {
242
 			logger.error(e.getMessage(), e);
244
 			logger.error(e.getMessage(), e);
243
 			return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
245
 			return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
255
 	public ReturnT<String> stop(int id) {
257
 	public ReturnT<String> stop(int id) {
256
         XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
258
         XxlJobInfo xxlJobInfo = xxlJobInfoDao.loadById(id);
257
 
259
 
258
-		// next trigger time
259
-		long nextTriggerTime = 0;
260
-		try {
261
-			nextTriggerTime = new CronExpression(xxlJobInfo.getJobCron()).getNextValidTimeAfter(new Date()).getTime();
262
-		} catch (ParseException e) {
263
-			logger.error(e.getMessage(), e);
264
-			return new ReturnT<String>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid")+" | "+ e.getMessage());
265
-		}
266
-
267
 		xxlJobInfo.setTriggerStatus(0);
260
 		xxlJobInfo.setTriggerStatus(0);
268
 		xxlJobInfo.setTriggerLastTime(0);
261
 		xxlJobInfo.setTriggerLastTime(0);
269
-		xxlJobInfo.setTriggerNextTime(nextTriggerTime);
262
+		xxlJobInfo.setTriggerNextTime(0);
270
 
263
 
271
 		xxlJobInfoDao.update(xxlJobInfo);
264
 		xxlJobInfoDao.update(xxlJobInfo);
272
 		return ReturnT.SUCCESS;
265
 		return ReturnT.SUCCESS;