public interface JobStore
The interface to be implemented by classes that want to provide a
and Job storage mechanism for the
Trigger's use.
QuartzScheduler
Storage of Job s and Trigger s should be keyed
on the combination of their name and group for uniqueness.
QuartzScheduler,
Trigger,
Job,
JobDetail,
JobDataMap,
Calendar| Modifier and Type | Method and Description |
|---|---|
List<OperableTrigger> |
acquireNextTriggers(long noLaterThan,
int maxCount,
long timeWindow)
Get a handle to the next trigger to be fired, and mark it as 'reserved'
by the calling scheduler.
|
boolean |
checkExists(JobKey jobKey)
Determine whether a
Job with the given identifier already
exists within the scheduler. |
boolean |
checkExists(TriggerKey triggerKey)
Determine whether a
Trigger with the given identifier already
exists within the scheduler. |
void |
clearAllSchedulingData()
|
long |
getAcquireRetryDelay(int failureCount)
Get the amount of time (in ms) to wait when accessing this job store
repeatedly fails.
|
List<String> |
getCalendarNames()
Get the names of all of the
s
in the JobStore. |
long |
getEstimatedTimeToReleaseAndAcquireTrigger()
How long (in milliseconds) the
JobStore implementation
estimates that it will take to release a trigger and acquire a new one. |
List<String> |
getJobGroupNames()
Get the names of all of the
groups. |
Set<JobKey> |
getJobKeys(GroupMatcher<JobKey> matcher)
Get the keys of all of the
s that
have the given group name. |
int |
getNumberOfCalendars()
Get the number of
s that are
stored in the JobsStore. |
int |
getNumberOfJobs()
Get the number of
s that are
stored in the JobsStore. |
int |
getNumberOfTriggers()
Get the number of
s that are
stored in the JobsStore. |
Set<String> |
getPausedTriggerGroups() |
List<String> |
getTriggerGroupNames()
Get the names of all of the
groups. |
Set<TriggerKey> |
getTriggerKeys(GroupMatcher<TriggerKey> matcher)
Get the names of all of the
s
that have the given group name. |
List<OperableTrigger> |
getTriggersForJob(JobKey jobKey)
Get all of the Triggers that are associated to the given Job.
|
Trigger.TriggerState |
getTriggerState(TriggerKey triggerKey)
Get the current state of the identified
. |
void |
initialize(ClassLoadHelper loadHelper,
SchedulerSignaler signaler)
Called by the QuartzScheduler before the
JobStore is
used, in order to give the it a chance to initialize. |
boolean |
isClustered()
Whether or not the
JobStore implementation is clustered. |
void |
pauseAll()
Pause all triggers - equivalent of calling
pauseTriggerGroup(group)
on every group. |
void |
pauseJob(JobKey jobKey)
Pause the
with the given name - by
pausing all of its current Triggers. |
Collection<String> |
pauseJobs(GroupMatcher<JobKey> groupMatcher)
Pause all of the
in the given
group - by pausing all of their Triggers. |
void |
pauseTrigger(TriggerKey triggerKey)
Pause the
with the given key. |
Collection<String> |
pauseTriggers(GroupMatcher<TriggerKey> matcher)
Pause all of the
in the
given group. |
void |
releaseAcquiredTrigger(OperableTrigger trigger)
Inform the
JobStore that the scheduler no longer plans to
fire the given Trigger, that it had previously acquired
(reserved). |
boolean |
removeCalendar(String calName)
Remove (delete) the
with the
given name. |
boolean |
removeJob(JobKey jobKey)
|
boolean |
removeJobs(List<JobKey> jobKeys) |
boolean |
removeTrigger(TriggerKey triggerKey)
Remove (delete) the
with the
given key. |
boolean |
removeTriggers(List<TriggerKey> triggerKeys) |
boolean |
replaceTrigger(TriggerKey triggerKey,
OperableTrigger newTrigger)
Remove (delete) the
with the
given key, and store the new given one - which must be associated
with the same job. |
void |
resetTriggerFromErrorState(TriggerKey triggerKey)
Reset the current state of the identified
from Trigger.TriggerState.ERROR to Trigger.TriggerState.NORMAL or
Trigger.TriggerState.PAUSED as appropriate. |
void |
resumeAll()
Resume (un-pause) all triggers - equivalent of calling
resumeTriggerGroup(group)
on every group. |
void |
resumeJob(JobKey jobKey)
Resume (un-pause) the
with the
given key. |
Collection<String> |
resumeJobs(GroupMatcher<JobKey> matcher)
Resume (un-pause) all of the
in
the given group. |
void |
resumeTrigger(TriggerKey triggerKey)
Resume (un-pause) the
with the
given key. |
Collection<String> |
resumeTriggers(GroupMatcher<TriggerKey> matcher)
Resume (un-pause) all of the
in the given group. |
Calendar |
retrieveCalendar(String calName)
Retrieve the given
. |
JobDetail |
retrieveJob(JobKey jobKey)
|
OperableTrigger |
retrieveTrigger(TriggerKey triggerKey)
Retrieve the given
. |
void |
schedulerPaused()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has been paused. |
void |
schedulerResumed()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has resumed after being paused. |
void |
schedulerStarted()
Called by the QuartzScheduler to inform the
JobStore that
the scheduler has started. |
void |
setInstanceId(String schedInstId)
Inform the
JobStore of the Scheduler instance's Id,
prior to initialize being invoked. |
void |
setInstanceName(String schedName)
Inform the
JobStore of the Scheduler instance's name,
prior to initialize being invoked. |
void |
setThreadPoolSize(int poolSize)
Tells the JobStore the pool size used to execute jobs
|
void |
shutdown()
Called by the QuartzScheduler to inform the
JobStore that
it should free up all of it's resources because the scheduler is
shutting down. |
void |
storeCalendar(String name,
Calendar calendar,
boolean replaceExisting,
boolean updateTriggers)
Store the given
. |
void |
storeJob(JobDetail newJob,
boolean replaceExisting)
Store the given
. |
void |
storeJobAndTrigger(JobDetail newJob,
OperableTrigger newTrigger)
|
void |
storeJobsAndTriggers(Map<JobDetail,Set<? extends Trigger>> triggersAndJobs,
boolean replace) |
void |
storeTrigger(OperableTrigger newTrigger,
boolean replaceExisting)
Store the given
. |
boolean |
supportsPersistence() |
void |
triggeredJobComplete(OperableTrigger trigger,
JobDetail jobDetail,
Trigger.CompletedExecutionInstruction triggerInstCode)
Inform the
JobStore that the scheduler has completed the
firing of the given Trigger (and the execution of its
associated Job completed, threw an exception, or was vetoed),
and that the
in the given JobDetail should be updated if the Job
is stateful. |
List<TriggerFiredResult> |
triggersFired(List<OperableTrigger> triggers)
Inform the
JobStore that the scheduler is now firing the
given Trigger (executing its associated Job),
that it had previously acquired (reserved). |
void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler) throws SchedulerConfigException
JobStore is
used, in order to give the it a chance to initialize.SchedulerConfigExceptionvoid schedulerStarted()
throws SchedulerException
JobStore that
the scheduler has started.SchedulerExceptionvoid schedulerPaused()
JobStore that
the scheduler has been paused.void schedulerResumed()
JobStore that
the scheduler has resumed after being paused.void shutdown()
JobStore that
it should free up all of it's resources because the scheduler is
shutting down.boolean supportsPersistence()
long getEstimatedTimeToReleaseAndAcquireTrigger()
JobStore implementation
estimates that it will take to release a trigger and acquire a new one.boolean isClustered()
JobStore implementation is clustered.void storeJobAndTrigger(JobDetail newJob, OperableTrigger newTrigger) throws ObjectAlreadyExistsException, JobPersistenceException
newJob - The JobDetail to be stored.newTrigger - The Trigger to be stored.ObjectAlreadyExistsException - if a Job with the same name/group already
exists.JobPersistenceExceptionvoid storeJob(JobDetail newJob, boolean replaceExisting) throws ObjectAlreadyExistsException, JobPersistenceException
JobDetail.newJob - The JobDetail to be stored.replaceExisting - If true, any Job existing in the
JobStore with the same name & group should be
over-written.ObjectAlreadyExistsException - if a Job with the same name/group already
exists, and replaceExisting is set to false.JobPersistenceExceptionvoid storeJobsAndTriggers(Map<JobDetail,Set<? extends Trigger>> triggersAndJobs, boolean replace) throws ObjectAlreadyExistsException, JobPersistenceException
boolean removeJob(JobKey jobKey) throws JobPersistenceException
Job with the given
key, and any Trigger s that reference
it.
If removal of the Job results in an empty group, the
group should be removed from the JobStore's list of
known group names.
true if a Job with the given name &
group was found and removed from the store.JobPersistenceExceptionboolean removeJobs(List<JobKey> jobKeys) throws JobPersistenceException
JobPersistenceExceptionJobDetail retrieveJob(JobKey jobKey) throws JobPersistenceException
Job, or null if there is no match.JobPersistenceExceptionvoid storeTrigger(OperableTrigger newTrigger, boolean replaceExisting) throws ObjectAlreadyExistsException, JobPersistenceException
Trigger.newTrigger - The Trigger to be stored.replaceExisting - If true, any Trigger existing in
the JobStore with the same name & group should
be over-written.ObjectAlreadyExistsException - if a Trigger with the same name/group already
exists, and replaceExisting is set to false.JobPersistenceExceptionpauseTriggers(org.quartz.impl.matchers.GroupMatcher)boolean removeTrigger(TriggerKey triggerKey) throws JobPersistenceException
Trigger with the
given key.
If removal of the Trigger results in an empty group, the
group should be removed from the JobStore's list of
known group names.
If removal of the Trigger results in an 'orphaned' Job
that is not 'durable', then the Job should be deleted
also.
true if a Trigger with the given
name & group was found and removed from the store.JobPersistenceExceptionboolean removeTriggers(List<TriggerKey> triggerKeys) throws JobPersistenceException
JobPersistenceExceptionboolean replaceTrigger(TriggerKey triggerKey, OperableTrigger newTrigger) throws JobPersistenceException
Trigger with the
given key, and store the new given one - which must be associated
with the same job.newTrigger - The new Trigger to be stored.true if a Trigger with the given
name & group was found and removed from the store.JobPersistenceExceptionOperableTrigger retrieveTrigger(TriggerKey triggerKey) throws JobPersistenceException
Trigger.Trigger, or null if there is no
match.JobPersistenceExceptionboolean checkExists(JobKey jobKey) throws JobPersistenceException
Job with the given identifier already
exists within the scheduler.jobKey - the identifier to check forSchedulerExceptionJobPersistenceExceptionboolean checkExists(TriggerKey triggerKey) throws JobPersistenceException
Trigger with the given identifier already
exists within the scheduler.triggerKey - the identifier to check forSchedulerExceptionJobPersistenceExceptionvoid clearAllSchedulingData()
throws JobPersistenceException
JobPersistenceExceptionvoid storeCalendar(String name, Calendar calendar, boolean replaceExisting, boolean updateTriggers) throws ObjectAlreadyExistsException, JobPersistenceException
Calendar.calendar - The Calendar to be stored.replaceExisting - If true, any Calendar existing
in the JobStore with the same name & group
should be over-written.updateTriggers - If true, any Triggers existing
in the JobStore that reference an existing
Calendar with the same name with have their next fire time
re-computed with the new Calendar.ObjectAlreadyExistsException - if a Calendar with the same name already
exists, and replaceExisting is set to false.JobPersistenceExceptionboolean removeCalendar(String calName) throws JobPersistenceException
Calendar with the
given name.
If removal of the Calendar would result in
Triggers pointing to non-existent calendars, then a
JobPersistenceException will be thrown.
calName - The name of the Calendar to be removed.true if a Calendar with the given name
was found and removed from the store.JobPersistenceExceptionCalendar retrieveCalendar(String calName) throws JobPersistenceException
Trigger.calName - The name of the Calendar to be retrieved.Calendar, or null if there is no
match.JobPersistenceExceptionint getNumberOfJobs()
throws JobPersistenceException
Job s that are
stored in the JobsStore.JobPersistenceExceptionint getNumberOfTriggers()
throws JobPersistenceException
Trigger s that are
stored in the JobsStore.JobPersistenceExceptionint getNumberOfCalendars()
throws JobPersistenceException
Calendar s that are
stored in the JobsStore.JobPersistenceExceptionSet<JobKey> getJobKeys(GroupMatcher<JobKey> matcher) throws JobPersistenceException
Job s that
have the given group name.
If there are no jobs in the given group name, the result should be
an empty collection (not null).
JobPersistenceExceptionSet<TriggerKey> getTriggerKeys(GroupMatcher<TriggerKey> matcher) throws JobPersistenceException
Trigger s
that have the given group name.
If there are no triggers in the given group name, the result should be a
zero-length array (not null).
JobPersistenceExceptionList<String> getJobGroupNames() throws JobPersistenceException
Job
groups.
If there are no known group names, the result should be a zero-length
array (not null).
JobPersistenceExceptionList<String> getTriggerGroupNames() throws JobPersistenceException
Trigger
groups.
If there are no known group names, the result should be a zero-length
array (not null).
JobPersistenceExceptionList<String> getCalendarNames() throws JobPersistenceException
Calendar s
in the JobStore.
If there are no Calendars in the given group name, the result should be
a zero-length array (not null).
JobPersistenceExceptionList<OperableTrigger> getTriggersForJob(JobKey jobKey) throws JobPersistenceException
If there are no matches, a zero-length array should be returned.
JobPersistenceExceptionTrigger.TriggerState getTriggerState(TriggerKey triggerKey) throws JobPersistenceException
Trigger.JobPersistenceExceptionTrigger.TriggerStatevoid resetTriggerFromErrorState(TriggerKey triggerKey) throws JobPersistenceException
Trigger
from Trigger.TriggerState.ERROR to Trigger.TriggerState.NORMAL or
Trigger.TriggerState.PAUSED as appropriate.
Only affects triggers that are in ERROR state - if identified trigger is not in that state then the result is a no-op.
The result will be the trigger returning to the normal, waiting to be fired state, unless the trigger's group has been paused, in which case it will go into the PAUSED state.
JobPersistenceExceptionvoid pauseTrigger(TriggerKey triggerKey) throws JobPersistenceException
Trigger with the given key.JobPersistenceExceptionresumeTrigger(TriggerKey)Collection<String> pauseTriggers(GroupMatcher<TriggerKey> matcher) throws JobPersistenceException
Triggers in the
given group.
The JobStore should "remember" that the group is paused, and impose the pause on any new triggers that are added to the group while the group is paused.
JobPersistenceExceptionresumeTriggers(GroupMatcher)void pauseJob(JobKey jobKey) throws JobPersistenceException
Job with the given name - by
pausing all of its current Triggers.JobPersistenceExceptionresumeJob(JobKey)Collection<String> pauseJobs(GroupMatcher<JobKey> groupMatcher) throws JobPersistenceException
Jobs in the given
group - by pausing all of their Triggers.
The JobStore should "remember" that the group is paused, and impose the pause on any new jobs that are added to the group while the group is paused.
JobPersistenceExceptionresumeJobs(GroupMatcher)void resumeTrigger(TriggerKey triggerKey) throws JobPersistenceException
Trigger with the
given key.
If the Trigger missed one or more fire-times, then the
Trigger's misfire instruction will be applied.
JobPersistenceExceptionpauseTrigger(TriggerKey)Collection<String> resumeTriggers(GroupMatcher<TriggerKey> matcher) throws JobPersistenceException
Triggers
in the given group.
If any Trigger missed one or more fire-times, then the
Trigger's misfire instruction will be applied.
JobPersistenceExceptionpauseTriggers(GroupMatcher)Set<String> getPausedTriggerGroups() throws JobPersistenceException
JobPersistenceExceptionvoid resumeJob(JobKey jobKey) throws JobPersistenceException
Job with the
given key.
If any of the Job'sTrigger s missed one
or more fire-times, then the Trigger's misfire
instruction will be applied.
JobPersistenceExceptionpauseJob(JobKey)Collection<String> resumeJobs(GroupMatcher<JobKey> matcher) throws JobPersistenceException
Jobs in
the given group.
If any of the Job s had Trigger s that
missed one or more fire-times, then the Trigger's
misfire instruction will be applied.
JobPersistenceExceptionpauseJobs(GroupMatcher)void pauseAll()
throws JobPersistenceException
pauseTriggerGroup(group)
on every group.
When resumeAll() is called (to un-pause), trigger misfire
instructions WILL be applied.
JobPersistenceExceptionresumeAll(),
pauseTriggers(GroupMatcher)void resumeAll()
throws JobPersistenceException
resumeTriggerGroup(group)
on every group.
If any Trigger missed one or more fire-times, then the
Trigger's misfire instruction will be applied.
JobPersistenceExceptionpauseAll()List<OperableTrigger> acquireNextTriggers(long noLaterThan, int maxCount, long timeWindow) throws JobPersistenceException
noLaterThan - If > 0, the JobStore should only return a Trigger
that will fire no later than the time represented in this value as
milliseconds.JobPersistenceExceptionreleaseAcquiredTrigger(OperableTrigger)void releaseAcquiredTrigger(OperableTrigger trigger)
JobStore that the scheduler no longer plans to
fire the given Trigger, that it had previously acquired
(reserved).List<TriggerFiredResult> triggersFired(List<OperableTrigger> triggers) throws JobPersistenceException
JobStore that the scheduler is now firing the
given Trigger (executing its associated Job),
that it had previously acquired (reserved).JobPersistenceExceptionvoid triggeredJobComplete(OperableTrigger trigger, JobDetail jobDetail, Trigger.CompletedExecutionInstruction triggerInstCode)
JobStore that the scheduler has completed the
firing of the given Trigger (and the execution of its
associated Job completed, threw an exception, or was vetoed),
and that the JobDataMap
in the given JobDetail should be updated if the Job
is stateful.void setInstanceId(String schedInstId)
JobStore of the Scheduler instance's Id,
prior to initialize being invoked.void setInstanceName(String schedName)
JobStore of the Scheduler instance's name,
prior to initialize being invoked.void setThreadPoolSize(int poolSize)
poolSize - amount of threads allocated for job executionlong getAcquireRetryDelay(int failureCount)
acquireNextTriggers(long, int, long) fail more than once in succession, and the
thread thus wants to wait a bit before trying again, to not consume
100% CPU, write huge amounts of errors into logs, etc. in cases like
the DB being offline/restarting.
The delay returned by implementations should be between 20 and
600000 milliseconds.failureCount - the number of successive failures seen so farCopyright 2001-2019, Terracotta, Inc.