brainslug.flow.execution.async.AbstractRetryStrategy Maven / Gradle / Ivy
The newest version!
package brainslug.flow.execution.async;
import brainslug.flow.node.task.RetryStrategy;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public abstract class AbstractRetryStrategy implements RetryStrategy {
public static AbstractRetryStrategy linear(final long intervalDuration, final TimeUnit intervalUnit) {
return new AbstractRetryStrategy() {
@Override
public Date nextRetry(long retryCount, Date baseDate) {
return new Date(baseDate.getTime() + intervalUnit.toMillis(intervalDuration));
}
@Override
public String toString() {
return String.format("linear retry, duration: %s, unit: %s", intervalDuration, intervalUnit);
}
};
}
public static AbstractRetryStrategy quadratic(final long intervalDuration, final TimeUnit intervalUnit) {
return new AbstractRetryStrategy() {
@Override
public Date nextRetry(long retryCount, Date baseDate) {
return new Date(baseDate.getTime() + intervalUnit.toMillis(intervalDuration * retryCount * retryCount));
}
@Override
public String toString() {
return String.format("quadratic retry, duration: %s, unit: %s", intervalDuration, intervalUnit);
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy