package core.framework.impl.scheduler; import core.framework.api.scheduler.Job; import core.framework.api.util.Randoms; import java.time.Duration; /** * @author neo */ public final class FixedRateTrigger implements Trigger { private final String name; private final Job job; private final Duration rate; public FixedRateTrigger(String name, Job job, Duration rate) { this.name = name; this.job = job; this.rate = rate; } @Override public String name() { return name; } @Override public Job job() { return job; } @Override public void schedule(Scheduler scheduler) { Duration delay = Duration.ofMillis((long) Randoms.number(8000, 15000)); // delay 8s to 15s scheduler.schedule(this, delay, rate); } @Override public String frequency() { return "fixed-rate@" + rate; } }