Package org.jobrunr.storage.nosql.redis
Class JedisRedisStorageProvider
java.lang.Object
org.jobrunr.storage.AbstractStorageProvider
org.jobrunr.storage.nosql.redis.JedisRedisStorageProvider
- All Implemented Interfaces:
AutoCloseable
,NoSqlStorageProvider
,StorageProvider
@Beta
public class JedisRedisStorageProvider
extends AbstractStorageProvider
implements NoSqlStorageProvider
-
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
ConstructorDescriptionJedisRedisStorageProvider
(redis.clients.jedis.JedisPool jedisPool) JedisRedisStorageProvider
(redis.clients.jedis.JedisPool jedisPool, String keyPrefix) JedisRedisStorageProvider
(redis.clients.jedis.JedisPool jedisPool, String keyPrefix, RateLimiter changeListenerNotificationRateLimit) JedisRedisStorageProvider
(redis.clients.jedis.JedisPool jedisPool, RateLimiter changeListenerNotificationRateLimit) -
Method Summary
Modifier and TypeMethodDescriptionvoid
announceBackgroundJobServer
(BackgroundJobServerStatus serverStatus) long
Counts all the jobs matching the givenStateName
.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.getDistinctJobSignatures
(StateName... states) protected redis.clients.jedis.Jedis
getJedis()
getJobById
(UUID id) Returns theJob
with the given id or throws aJobNotFoundException
if the job does not existgetJobList
(StateName state, Instant updatedBefore, AmountRequest amountRequest) getJobList
(StateName state, AmountRequest amountRequest) Returns all the jobs matching the givenStateName
andAmountRequest
.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, AmountRequest amountRequest) 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) 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, validatePollInterval, validateRecurringJobInterval
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, getJobs, getJobsToProcess, getScheduledJobs, getStorageProviderInfo, removeJobStorageOnChangeListener, validatePollInterval, validateRecurringJobInterval
-
Constructor Details
-
JedisRedisStorageProvider
public JedisRedisStorageProvider() -
JedisRedisStorageProvider
public JedisRedisStorageProvider(redis.clients.jedis.JedisPool jedisPool) -
JedisRedisStorageProvider
-
JedisRedisStorageProvider
public JedisRedisStorageProvider(redis.clients.jedis.JedisPool jedisPool, RateLimiter changeListenerNotificationRateLimit) -
JedisRedisStorageProvider
public JedisRedisStorageProvider(redis.clients.jedis.JedisPool jedisPool, String keyPrefix, 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
-
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
-
countJobs
Description copied from interface:StorageProvider
Counts all the jobs matching the givenStateName
.- Specified by:
countJobs
in interfaceStorageProvider
- Parameters:
state
- the StateName to test eachJob
against- Returns:
- the amount of jobs matching the given
StateName
.
-
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
-
deleteJobsPermanently
- Specified by:
deleteJobsPermanently
in interfaceStorageProvider
-
getDistinctJobSignatures
- Specified by:
getDistinctJobSignatures
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
-
recurringJobsUpdated
- Specified by:
recurringJobsUpdated
in interfaceStorageProvider
-
getRecurringJobs
Description copied from interface:StorageProvider
Returns a listRecurringJobs
.- Specified by:
getRecurringJobs
in interfaceStorageProvider
- Returns:
- a list
RecurringJobs
.
-
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
-
getJedis
protected redis.clients.jedis.Jedis getJedis()
-