|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.atlassian.scheduler.core.DelegatingSchedulerService
public class DelegatingSchedulerService
A scheduler service that delegates all requests to another scheduler service.
The intended purpose is to allow applications to instantiate one of the
AbstractSchedulerService implementations as a LifecycleAwareSchedulerService
visible only to the application and register this restricted implementation as
the SchedulerService that is available to add-ons.
| Constructor Summary | |
|---|---|
DelegatingSchedulerService(SchedulerService delegate)
|
|
| Method Summary | |
|---|---|
JobDetails |
getJobDetails(JobId jobId)
Retrieves the details for the specified job ID. |
Set<JobRunnerKey> |
getJobRunnerKeysForAllScheduledJobs()
Returns all of the job runner keys that have been used to schedule jobs, regardless of whether or not JobRunners are currently registered for them. |
List<JobDetails> |
getJobsByJobRunnerKey(JobRunnerKey jobRunnerKey)
Retrieves the job details for all jobs with the given job runner key. |
Set<JobRunnerKey> |
getRegisteredJobRunnerKeys()
Returns all of the job runner keys that currently have registered job runners, regardless of whether or not any jobs have actually been scheduled
for them. |
void |
registerJobRunner(JobRunnerKey jobRunnerKey,
JobRunner jobRunner)
Registers the job runner for a given job runner key. |
void |
scheduleJob(JobId jobId,
JobConfig jobConfig)
Schedules a job with the given job ID. |
JobId |
scheduleJobWithGeneratedId(JobConfig jobConfig)
Schedules a "dynamic" job by generating a new unique job ID. |
void |
unregisterJobRunner(JobRunnerKey jobRunnerKey)
Unregisters the specified job runner. |
void |
unscheduleJob(JobId jobId)
Unschedules a previously scheduled job ID. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DelegatingSchedulerService(SchedulerService delegate)
| Method Detail |
|---|
public void registerJobRunner(@Nonnull
JobRunnerKey jobRunnerKey,
@Nonnull
JobRunner jobRunner)
SchedulerServicejobRunnerKey will replace any existing registration.
A job that is scheduled to run but has no registered job runner is reported as
unavailable.
registerJobRunner in interface SchedulerServicejobRunnerKey - Globally unique job runner key.jobRunner - the concrete object capable of running instances of this job
public void unregisterJobRunner(@Nonnull
JobRunnerKey jobRunnerKey)
SchedulerServiceJobs that fire with no registered job runner will fail to start.
unregisterJobRunner in interface SchedulerServicejobRunnerKey - Globally unique job runner key.@Nonnull public Set<JobRunnerKey> getRegisteredJobRunnerKeys()
SchedulerServicescheduled
for them. The job runner keys are not guaranteed to be returned in any particular order.
getRegisteredJobRunnerKeys in interface SchedulerServiceSchedulerService.getJobRunnerKeysForAllScheduledJobs()@Nonnull public Set<JobRunnerKey> getJobRunnerKeysForAllScheduledJobs()
SchedulerServiceJobRunners are currently registered for them. The job
runner keys are not guaranteed to be returned in any particular order.
getJobRunnerKeysForAllScheduledJobs in interface SchedulerServiceSchedulerService.getRegisteredJobRunnerKeys()
public void scheduleJob(@Nonnull
JobId jobId,
@Nonnull
JobConfig jobConfig)
throws SchedulerServiceException
SchedulerServiceIf a job already exists with the given ID, then it will be replaced with the new run config. If the schedule is eligible to run immediately and multiple nodes take this action at close to the same time, then the job might run more than once as the the instances replace one another.
In most cases, this will be harmless, but it can be avoided by making sure the job will not be eligible to run until some time in the future. For example, when using an interval schedule, the caller can first check whether or not the job already exists, and if it does not then specify an initial start date for the schedule, as in:
Schedule.forInterval(120000L, new Date(System.currentTimeMillis() + 15000L))
Since the schedule will not be eligible to run until 15 seconds after the current time, any race conditions between two nodes starting up at once and trying to schedule the same job should resolve before the job actually fires. For cron expressions, this is a little bit more difficult, but you can set the seconds field to an explicit value to accomplish the same thing. For example:
final Calendar calendar = new GregorianCalendar();
calendar.add(15, Calendar.SECOND);
final Schedule schedule = Schedule.forCronExpression(
calendar.get(Calendar.SECOND) + " 0 2 * * ?"); // at or just after 2 A.M.
scheduleJob(...
scheduleJob in interface SchedulerServicejobId - the Job IDjobConfig - the configuration details for the job instance including schedule,
run mode, run parameters, etc.
SchedulerServiceException - if the job cannot be scheduled because there is a problem
with either the provided configuration or within the scheduler implementation itself
@Nonnull
public JobId scheduleJobWithGeneratedId(@Nonnull
JobConfig jobConfig)
throws SchedulerServiceException
SchedulerService
scheduleJobWithGeneratedId in interface SchedulerServicejobConfig - the configuration details for the job instance including schedule,
run mode, run parameters, etc.
SchedulerServiceException - if the job cannot be scheduled because there is a problem
with either the provided configuration or within the scheduler implementation itself
public void unscheduleJob(@Nonnull
JobId jobId)
SchedulerServiceIf no such job exists, then the request is ignored.
unscheduleJob in interface SchedulerServicejobId - the Job ID to be unregistered
@CheckForNull
public JobDetails getJobDetails(@Nonnull
JobId jobId)
SchedulerService
getJobDetails in interface SchedulerServicejobId - the Job ID for which to retrieve the details
null if no such job is defined
@Nonnull
public List<JobDetails> getJobsByJobRunnerKey(@Nonnull
JobRunnerKey jobRunnerKey)
SchedulerService
getJobsByJobRunnerKey in interface SchedulerServicejobRunnerKey - the job runner key to look up
null
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||