|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.atlassian.scheduler.core.AbstractSchedulerService
com.atlassian.scheduler.quartz1.Quartz1SchedulerService
public class Quartz1SchedulerService
Quartz 1.x implementation of a SchedulerService.
Job names, with the Job being created or
destroyed automatically based on whether or not it has any existing Triggers.Jobs use Quartz1Job, which immediately delegates to JobLauncher.Trigger names.byte[] and stored in the JobDataMap
for the Quartz Trigger.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface com.atlassian.scheduler.core.LifecycleAwareSchedulerService |
|---|
LifecycleAwareSchedulerService.State |
| Field Summary |
|---|
| Fields inherited from class com.atlassian.scheduler.core.AbstractSchedulerService |
|---|
BY_JOB_ID |
| Constructor Summary | |
|---|---|
Quartz1SchedulerService(RunDetailsDao runDetailsDao,
Quartz1SchedulerConfiguration config)
|
|
Quartz1SchedulerService(RunDetailsDao runDetailsDao,
SchedulerServiceConfiguration config,
org.quartz.Scheduler localScheduler,
org.quartz.Scheduler clusteredScheduler)
|
|
| Method Summary | |
|---|---|
org.quartz.Scheduler |
getClusteredQuartzScheduler()
Deprecated. Provided as a last resort only. Avoid accessing Quartz directly if possible. Since v1.0 |
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. |
org.quartz.Scheduler |
getLocalQuartzScheduler()
Deprecated. Provided as a last resort only. Avoid accessing Quartz directly if possible. Since v1.0 |
void |
scheduleJob(JobId jobId,
JobConfig jobConfig)
Schedules a job with the given job ID. |
protected void |
shutdownImpl()
Provided by the scheduler service to implement AbstractSchedulerService.shutdown() requests. |
protected void |
standbyImpl()
Provided by the scheduler service to implement AbstractSchedulerService.standby() requests. |
protected void |
startImpl()
Provided by the scheduler service to implement AbstractSchedulerService.start() requests. |
void |
unscheduleJob(JobId jobId)
Unschedules a previously scheduled job ID. |
| Methods inherited from class com.atlassian.scheduler.core.AbstractSchedulerService |
|---|
addRunDetails, checked, getJobRunner, getRegisteredJobRunnerKeys, getState, registerJobRunner, scheduleJobWithGeneratedId, shutdown, standby, start, unregisterJobRunner |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public Quartz1SchedulerService(RunDetailsDao runDetailsDao,
Quartz1SchedulerConfiguration config)
throws SchedulerServiceException
SchedulerServiceException
public Quartz1SchedulerService(RunDetailsDao runDetailsDao,
SchedulerServiceConfiguration config,
org.quartz.Scheduler localScheduler,
org.quartz.Scheduler clusteredScheduler)
throws SchedulerServiceException
SchedulerServiceException| Method Detail |
|---|
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(...
jobId - 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
public void unscheduleJob(@Nonnull
JobId jobId)
SchedulerServiceIf no such job exists, then the request is ignored.
jobId - the Job ID to be unregistered
@Nullable
public JobDetails getJobDetails(@Nonnull
JobId jobId)
SchedulerService
jobId - the Job ID for which to retrieve the details
null if no such job is defined@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.
SchedulerService.getRegisteredJobRunnerKeys()
@Nonnull
public List<JobDetails> getJobsByJobRunnerKey(@Nonnull
JobRunnerKey jobRunnerKey)
SchedulerService
jobRunnerKey - the job runner key to look up
null@Deprecated public org.quartz.Scheduler getLocalQuartzScheduler()
local scheduling. This
method will be removed in a future release and its use should be avoided if at all possible. It is
provided only because Atlassian applications have historically exposed Quartz 1.x to plugins and
may need to continue to do so as part of the migration to the atlassian-scheduler library.
local schedulinggetClusteredQuartzScheduler()@Deprecated public org.quartz.Scheduler getClusteredQuartzScheduler()
clustered scheduling. This
method will be removed in a future release and its use should be avoided if at all possible. It is
provided only because Atlassian applications have historically exposed Quartz 1.x to plugins and
may need to continue to do so as part of the migration to the atlassian-scheduler library.
clustered schedulinggetLocalQuartzScheduler()
protected void startImpl()
throws SchedulerServiceException
AbstractSchedulerServiceAbstractSchedulerService.start() requests. This
is only ever called while in State#STANDBY, and throwing an exception will
prevent the state from being updated.
startImpl in class AbstractSchedulerServiceSchedulerServiceException - if the scheduler implementation fails to start
protected void standbyImpl()
throws SchedulerServiceException
AbstractSchedulerServiceAbstractSchedulerService.standby() requests. This
is only ever called while in State#STARTED, and throwing an exception will
prevent the state from being updated.
standbyImpl in class AbstractSchedulerServiceSchedulerServiceException - if the scheduler implementation fails to enter standby modeprotected void shutdownImpl()
AbstractSchedulerServiceAbstractSchedulerService.shutdown() requests. This
is only ever called if the scheduler has not already been shut down, and throwing an
exception does not prevent the scheduler service from entering this state.
shutdownImpl in class AbstractSchedulerService
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||