fix(scheduler): 修复固定频率调度类型的时间计算逻辑

- 修改了时间计算方式,使用 fromTime 而不是 triggerLastTime 作为基准
- 添加了秒级时间校准逻辑,确保时间精确到秒
- 移除了原有的条件判断分支,简化了时间计算流程
- 修复了时间戳毫秒部分不为0时的处理逻辑
3.4.0-release
xuxueli 3 months ago
parent f93d4f2820
commit 469d69f8f3

@ -10,16 +10,17 @@ public class FixRateScheduleType extends ScheduleType {
@Override
public Date generateNextTriggerTime(XxlJobInfo jobInfo, Date fromTime) throws Exception {
// generate next trigger time, fix rate delay
Date nextTriggerTime = new Date(jobInfo.getTriggerLastTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L);
if (nextTriggerTime.after(fromTime)) {
// fix rate delay, after last-trigger-time
return nextTriggerTime;
} else {
// fix rate delay, after fromTime (clear ms, second +1)
fromTime = DateTool.setMilliseconds(DateTool.addSeconds(fromTime, 1), 0);
return new Date(fromTime.getTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L);
Date nextTriggerTime = new Date(fromTime.getTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L);
// assign second:
if (nextTriggerTime.getTime() % 1000 != 0) {
nextTriggerTime = DateTool.addSeconds(DateTool.setMilliseconds(nextTriggerTime, 0), 1);
}
return nextTriggerTime;
}
}

Loading…
Cancel
Save