Package org.jobrunr.storage.sql.common
Class DefaultSqlStorageProvider
java.lang.Object
org.jobrunr.storage.AbstractStorageProvider
org.jobrunr.storage.sql.common.DefaultSqlStorageProvider
- All Implemented Interfaces:
AutoCloseable
,SqlStorageProvider
,StorageProvider
- Direct Known Subclasses:
DB2StorageProvider
,H2StorageProvider
,MariaDbStorageProvider
,MySqlStorageProvider
,OracleStorageProvider
,PostgresStorageProvider
,SqLiteStorageProvider
,SQLServerStorageProvider
public class DefaultSqlStorageProvider
extends AbstractStorageProvider
implements SqlStorageProvider
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.jobrunr.storage.StorageProvider
StorageProvider.StorageProviderInfo
-
Field Summary
Modifier and TypeFieldDescriptionprotected final DataSource
protected final Dialect
protected final String
Fields inherited from interface org.jobrunr.storage.StorageProvider
BATCH_SIZE
-
Constructor Summary
ConstructorDescriptionDefaultSqlStorageProvider
(DataSource dataSource, Dialect dialect, String tablePrefix, StorageProviderUtils.DatabaseOptions databaseOptions) DefaultSqlStorageProvider
(DataSource dataSource, Dialect dialect, StorageProviderUtils.DatabaseOptions databaseOptions) DefaultSqlStorageProvider
(DataSource dataSource, Dialect dialect, StorageProviderUtils.DatabaseOptions databaseOptions, RateLimiter changeListenerNotificationRateLimit) -
Method Summary
Modifier and TypeMethodDescriptionvoid
announceBackgroundJobServer
(BackgroundJobServerStatus serverStatus) protected BackgroundJobServerTable
backgroundJobServerTable
(Connection connection) long
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) protected DatabaseCreator
getDistinctJobSignatures
(StateName... states) getJobById
(UUID id) 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 name) getMetadata
(String name, String owner) Returns a listRecurringJobs
.getScheduledJobs
(Instant scheduledBefore, PageRequest pageRequest) protected JobStatsView
jobStatsView
(Connection connection) protected JobTable
jobTable
(Connection connection) protected MetadataTable
metadataTable
(Connection connection) 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) protected RecurringJobTable
recurringJobTable
(Connection connection) 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) Methods inherited from class org.jobrunr.storage.AbstractStorageProvider
addJobStorageOnChangeListener, close, getStorageProviderInfo, notifyJobStatsOnChangeListeners, notifyJobStatsOnChangeListenersIf, notifyMetadataChangeListeners, notifyMetadataChangeListeners, removeJobStorageOnChangeListener
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.jobrunr.storage.StorageProvider
addJobStorageOnChangeListener, close, getJobById, getStorageProviderInfo, removeJobStorageOnChangeListener
-
Field Details
-
dataSource
-
dialect
-
tablePrefix
-
-
Constructor Details
-
DefaultSqlStorageProvider
public DefaultSqlStorageProvider(DataSource dataSource, Dialect dialect, StorageProviderUtils.DatabaseOptions databaseOptions) -
DefaultSqlStorageProvider
public DefaultSqlStorageProvider(DataSource dataSource, Dialect dialect, String tablePrefix, StorageProviderUtils.DatabaseOptions databaseOptions) -
DefaultSqlStorageProvider
public DefaultSqlStorageProvider(DataSource dataSource, Dialect dialect, StorageProviderUtils.DatabaseOptions databaseOptions, RateLimiter changeListenerNotificationRateLimit)
-
-
Method Details
-
setJobMapper
- Specified by:
setJobMapper
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.
-
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:
jobToSave
- 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
-
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
-
getScheduledJobs
- Specified by:
getScheduledJobs
in interfaceStorageProvider
-
getJobs
- Specified by:
getJobs
in interfaceStorageProvider
-
getJobs
- Specified by:
getJobs
in interfaceStorageProvider
-
getJobPage
- Specified by:
getJobPage
in interfaceStorageProvider
-
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
-
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
.
-
recurringJobsUpdated
- Specified by:
recurringJobsUpdated
in interfaceStorageProvider
-
countRecurringJobs
public long countRecurringJobs()- Specified by:
countRecurringJobs
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
-
getDatabaseCreator
-
jobTable
-
recurringJobTable
-
backgroundJobServerTable
-
metadataTable
-
jobStatsView
-