public class RetryConstraint
extends java.lang.Object
Job.shouldReRunOnThrowable(Throwable, int, int)
.
This object keeps additional data about handling job failures. You can simply use
RETRY
or CANCEL
if you just want to retry or cancel a job. Alternatively,
you can create your own instance where you can add a delay setNewDelayInMs(Long)
or
change Job's prioritiy setNewPriority(Integer)
.
A common use case is exponentially backing off a Job and you can use
createExponentialBackoff(int, long)
method to do that.
Modifier and Type | Field and Description |
---|---|
static RetryConstraint |
CANCEL |
static RetryConstraint |
RETRY |
Constructor and Description |
---|
RetryConstraint(boolean retry) |
Modifier and Type | Method and Description |
---|---|
static RetryConstraint |
createExponentialBackoff(int runCount,
long initialBackOffInMs)
Creates a response that will exponentially back off the job.
|
java.lang.Long |
getNewDelayInMs() |
java.lang.Integer |
getNewPriority() |
void |
setApplyNewDelayToGroup(boolean applyDelayToGroup)
Sets whether the delay in the constraint should be applied to the whole group.
|
void |
setNewDelayInMs(java.lang.Long newDelayInMs)
Sets a timeout until the Job is tried again.
|
void |
setNewPriority(java.lang.Integer newPriority)
Updates the Job's priority.
|
void |
setRetry(boolean retry)
Set whether the Job should be run again or cancelled.
|
boolean |
shouldRetry() |
boolean |
willApplyNewDelayToGroup()
Returns whether the delay in this retry constraint will be applied to all jobs in this group.
|
public static final RetryConstraint RETRY
public static final RetryConstraint CANCEL
public boolean shouldRetry()
public void setRetry(boolean retry)
retry
- True if job should be retried, false if it should be cancelledpublic java.lang.Long getNewDelayInMs()
public void setNewDelayInMs(java.lang.Long newDelayInMs)
newDelayInMs
- The new delay in Ms from now before retrying the jobpublic java.lang.Integer getNewPriority()
public void setNewPriority(java.lang.Integer newPriority)
newPriority
- Gives a new priority to the jobpublic static RetryConstraint createExponentialBackoff(int runCount, long initialBackOffInMs)
runCount
- The run count that was passed to
Job.shouldReRunOnThrowable(Throwable, int, int)
initialBackOffInMs
- The initial back off time. This will be the back off for the inital
run and then it will exponentially grow from this number.public void setApplyNewDelayToGroup(boolean applyDelayToGroup)
Note that the delay will effect any Job that is added after this call until the delay ends. This will ensure that the Job execution order will be preserved.
If the job does not have a group id (Job.getRunGroupId()
, calling this method has no
effect.
The group delay is global so even after you cancel the jobs, it will still affect the group until delay times out.
applyDelayToGroup
- Sets whether the delay should be applied to all jobs in this group.public boolean willApplyNewDelayToGroup()