Package org.jobrunr.storage
Class ThreadSafeStorageProvider
java.lang.Object
org.jobrunr.storage.ThreadSafeStorageProvider
- All Implemented Interfaces:
AutoCloseable
,StorageProvider
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.jobrunr.storage.StorageProvider
StorageProvider.StorageProviderInfo
-
Field Summary
Fields inherited from interface org.jobrunr.storage.StorageProvider
BATCH_SIZE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Allows to listen for changes related tojobs
.void
announceBackgroundJobServer
(BackgroundJobServerStatus serverStatus) void
close()
long
Deprecated.int
deleteJobsPermanently
(StateName state, Instant updatedBefore) void
deleteMetadata
(String name) int
Deletes theJob
with the given id and returns the amount of deleted jobs (either 0 or 1).int
Deletes theRecurringJob
with the given id.boolean
exists
(JobDetails jobDetails, StateName... states) getDistinctJobSignatures
(StateName... states) getJobById
(UUID id) Returns theJob
with the given id or throws aJobNotFoundException
if the job does not existgetJobById
(JobId jobId) Returns theJob
with the given id or throws aJobNotFoundException
if the job does not existgetJobPage
(StateName state, PageRequest pageRequest) getJobs
(StateName state, Instant updatedBefore, PageRequest pageRequest) getJobs
(StateName state, PageRequest pageRequest) Returns the statistics of the jobs (amount enqueued, amount scheduled, ...) Important: in most cases, this results in a intensive query.getMetadata
(String key) getMetadata
(String key, String owner) Returns a listRecurringJobs
.getScheduledJobs
(Instant scheduledBefore, PageRequest pageRequest) void
publishTotalAmountOfSucceededJobs
(int amount) boolean
recurringJobExists
(String recurringJobId, StateName... states) Returns true when aJob
created by theRecurringJob
with the given id exists with one of the given states.boolean
recurringJobsUpdated
(Long recurringJobsUpdatedHash) void
Remove the given listener that listens for changes toJobs
int
removeTimedOutBackgroundJobServers
(Instant heartbeatOlderThan) Save theJob
and increases the version if saving succeeded.void
saveMetadata
(JobRunrMetadata metadata) saveRecurringJob
(RecurringJob recurringJob) Saves aRecurringJob
to the database.void
setJobMapper
(JobMapper jobMapper) void
setUpStorageProvider
(StorageProviderUtils.DatabaseOptions databaseOptions) This method allows to reinitialize the StorageProvider.boolean
signalBackgroundJobServerAlive
(BackgroundJobServerStatus serverStatus) void
signalBackgroundJobServerStopped
(BackgroundJobServerStatus serverStatus)
-
Constructor Details
-
ThreadSafeStorageProvider
-
-
Method Details
-
getStorageProviderInfo
- Specified by:
getStorageProviderInfo
in interfaceStorageProvider
-
setUpStorageProvider
Description copied from interface:StorageProvider
This method allows to reinitialize the StorageProvider. It can be used if you are using Flyway or Liquibase to setup your database manually.By default, this method is automatically called on construction of the StorageProvider
- Specified by:
setUpStorageProvider
in interfaceStorageProvider
- Parameters:
databaseOptions
- defines whether to set up the StorageProvider or validate whether the StorageProvider is set up correctly.
-
addJobStorageOnChangeListener
Description copied from interface:StorageProvider
Allows to listen for changes related tojobs
.- Specified by:
addJobStorageOnChangeListener
in interfaceStorageProvider
- Parameters:
listener
- the listener to notify if there are any changes.- See Also:
-
removeJobStorageOnChangeListener
Description copied from interface:StorageProvider
Remove the given listener that listens for changes toJobs
- Specified by:
removeJobStorageOnChangeListener
in interfaceStorageProvider
- Parameters:
listener
- the listener to remove
-
setJobMapper
- Specified by:
setJobMapper
in interfaceStorageProvider
-
announceBackgroundJobServer
- Specified by:
announceBackgroundJobServer
in interfaceStorageProvider
-
signalBackgroundJobServerAlive
- Specified by:
signalBackgroundJobServerAlive
in interfaceStorageProvider
-
signalBackgroundJobServerStopped
- Specified by:
signalBackgroundJobServerStopped
in interfaceStorageProvider
-
getBackgroundJobServers
- Specified by:
getBackgroundJobServers
in interfaceStorageProvider
-
getLongestRunningBackgroundJobServerId
- Specified by:
getLongestRunningBackgroundJobServerId
in interfaceStorageProvider
-
removeTimedOutBackgroundJobServers
- Specified by:
removeTimedOutBackgroundJobServers
in interfaceStorageProvider
-
saveMetadata
- Specified by:
saveMetadata
in interfaceStorageProvider
-
getMetadata
- Specified by:
getMetadata
in interfaceStorageProvider
-
getMetadata
- Specified by:
getMetadata
in interfaceStorageProvider
-
deleteMetadata
- Specified by:
deleteMetadata
in interfaceStorageProvider
-
save
Description copied from interface:StorageProvider
Save theJob
and increases the version if saving succeeded.- Specified by:
save
in interfaceStorageProvider
- Parameters:
job
- the job to save- Returns:
- the same job with an increased version
-
save
Description copied from interface:StorageProvider
- Specified by:
save
in interfaceStorageProvider
- Parameters:
jobs
- the list of jobs to save- Returns:
- the same list of jobs with an increased version
-
deletePermanently
Description copied from interface:StorageProvider
Deletes theJob
with the given id and returns the amount of deleted jobs (either 0 or 1).- Specified by:
deletePermanently
in interfaceStorageProvider
- Parameters:
id
- the id of the Job to delete- Returns:
- 1 if the job with the given id was deleted, 0 otherwise
-
getJobById
Description copied from interface:StorageProvider
Returns theJob
with the given id or throws aJobNotFoundException
if the job does not exist- Specified by:
getJobById
in interfaceStorageProvider
- Parameters:
id
- the id of the Job to fetch- Returns:
- the requested Job
-
getJobs
- Specified by:
getJobs
in interfaceStorageProvider
-
getScheduledJobs
- Specified by:
getScheduledJobs
in interfaceStorageProvider
-
getJobs
- Specified by:
getJobs
in interfaceStorageProvider
-
getJobPage
- Specified by:
getJobPage
in interfaceStorageProvider
-
deleteJobsPermanently
- Specified by:
deleteJobsPermanently
in interfaceStorageProvider
-
getDistinctJobSignatures
- Specified by:
getDistinctJobSignatures
in interfaceStorageProvider
-
exists
- Specified by:
exists
in interfaceStorageProvider
-
recurringJobExists
Description copied from interface:StorageProvider
Returns true when aJob
created by theRecurringJob
with the given id exists with one of the given states.- Specified by:
recurringJobExists
in interfaceStorageProvider
- Parameters:
recurringJobId
- the id of the RecurringJob for which the check whether a Job existsstates
- the possible states for the Job (can be empty)- Returns:
- true if a Job exists created by a RecurringJob with the given id.
-
saveRecurringJob
Description copied from interface:StorageProvider
Saves aRecurringJob
to the database. If aRecurringJob
with the same id exists, it will be overwritten- Specified by:
saveRecurringJob
in interfaceStorageProvider
- Parameters:
recurringJob
- the RecurringJob to save- Returns:
- the same RecurringJob
-
getRecurringJobs
Description copied from interface:StorageProvider
Returns a listRecurringJobs
.- Specified by:
getRecurringJobs
in interfaceStorageProvider
- Returns:
- a list
RecurringJobs
.
-
countRecurringJobs
Deprecated.- Specified by:
countRecurringJobs
in interfaceStorageProvider
-
recurringJobsUpdated
- Specified by:
recurringJobsUpdated
in interfaceStorageProvider
-
deleteRecurringJob
Description copied from interface:StorageProvider
Deletes theRecurringJob
with the given id.- Specified by:
deleteRecurringJob
in interfaceStorageProvider
- Parameters:
id
- the id of the RecurringJob to delete- Returns:
- 1 if the RecurringJob with the given id was deleted, 0 otherwise
-
getJobStats
Description copied from interface:StorageProvider
Returns the statistics of the jobs (amount enqueued, amount scheduled, ...) Important: in most cases, this results in a intensive query. JobRunr is designed to not call this method too often to limit database CPU utilization. If you need access to this info, please use aJobStatsChangeListener
and register it using theStorageProvider.addJobStorageOnChangeListener(StorageProviderChangeListener)
.- Specified by:
getJobStats
in interfaceStorageProvider
- Returns:
- the
JobStats
-
publishTotalAmountOfSucceededJobs
public void publishTotalAmountOfSucceededJobs(int amount) - Specified by:
publishTotalAmountOfSucceededJobs
in interfaceStorageProvider
-
getJobById
Description copied from interface:StorageProvider
Returns theJob
with the given id or throws aJobNotFoundException
if the job does not exist- Specified by:
getJobById
in interfaceStorageProvider
- Parameters:
jobId
- the id of the Job to fetch- Returns:
- the requested Job
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceStorageProvider
-
getStorageProvider
-