use of cn.taketoday.retry.backoff.NoBackOffPolicy in project today-infrastructure by TAKETODAY.
the class AnnotationAwareRetryOperationsInterceptor method getStatefulInterceptor.
private MethodInterceptor getStatefulInterceptor(Object target, Method method, Retryable retryable) {
RetryTemplate template = createTemplate(retryable.listeners());
template.setRetryContextCache(this.retryContextCache);
CircuitBreaker circuit = AnnotatedElementUtils.findMergedAnnotation(method, CircuitBreaker.class);
if (circuit == null) {
circuit = findAnnotationOnTarget(target, method, CircuitBreaker.class);
}
if (circuit != null) {
RetryPolicy policy = getRetryPolicy(circuit);
CircuitBreakerRetryPolicy breaker = new CircuitBreakerRetryPolicy(policy);
breaker.setOpenTimeout(getOpenTimeout(circuit));
breaker.setResetTimeout(getResetTimeout(circuit));
template.setRetryPolicy(breaker);
template.setBackOffPolicy(new NoBackOffPolicy());
String label = circuit.label();
if (!StringUtils.hasText(label)) {
label = method.toGenericString();
}
return RetryInterceptorBuilder.circuitBreaker().keyGenerator(new FixedKeyGenerator("circuit")).retryOperations(template).recoverer(getRecoverer(target, method)).label(label).build();
}
RetryPolicy policy = getRetryPolicy(retryable);
template.setRetryPolicy(policy);
template.setBackOffPolicy(getBackoffPolicy(retryable.backoff()));
String label = retryable.label();
return RetryInterceptorBuilder.stateful().keyGenerator(this.methodArgumentsKeyGenerator).newMethodArgumentsIdentifier(this.newMethodArgumentsIdentifier).retryOperations(template).label(label).recoverer(getRecoverer(target, method)).build();
}
use of cn.taketoday.retry.backoff.NoBackOffPolicy in project today-infrastructure by TAKETODAY.
the class RetryTemplateBuilder method noBackoff.
/**
* Do not pause between attempts, retry immediately.
*
* @return this
* @see NoBackOffPolicy
*/
public RetryTemplateBuilder noBackoff() {
Assert.isNull(this.backOffPolicy, "You have already selected backoff policy");
this.backOffPolicy = new NoBackOffPolicy();
return this;
}
use of cn.taketoday.retry.backoff.NoBackOffPolicy in project today-infrastructure by TAKETODAY.
the class RetryTemplateBuilder method build.
/* ---------------- Building -------------- */
/**
* Finish configuration and build resulting {@link RetryTemplate}. For default
* behaviour and concurrency note see class-level doc of {@link RetryTemplateBuilder}.
* The {@code retryPolicy} of the returned {@link RetryTemplate} is always an instance
* of {@link CompositeRetryPolicy}, that consists of one base policy, and of
* {@link BinaryExceptionClassifierRetryPolicy}. The motivation is: whatever base
* policy we use, exception classification is extremely recommended.
*
* @return new instance of {@link RetryTemplate}
*/
public RetryTemplate build() {
RetryTemplate retryTemplate = new RetryTemplate();
// Exception classifier
BinaryExceptionClassifier exceptionClassifier = classifierBuilder != null ? classifierBuilder.build() : BinaryExceptionClassifier.defaultClassifier();
if (this.baseRetryPolicy == null) {
this.baseRetryPolicy = new MaxAttemptsRetryPolicy();
}
CompositeRetryPolicy finalPolicy = new CompositeRetryPolicy();
finalPolicy.setPolicies(new RetryPolicy[] { baseRetryPolicy, new BinaryExceptionClassifierRetryPolicy(exceptionClassifier) });
retryTemplate.setRetryPolicy(finalPolicy);
if (this.backOffPolicy == null) {
this.backOffPolicy = new NoBackOffPolicy();
}
retryTemplate.setBackOffPolicy(this.backOffPolicy);
if (this.listeners != null) {
retryTemplate.setListeners(this.listeners.toArray(new RetryListener[0]));
}
return retryTemplate;
}
use of cn.taketoday.retry.backoff.NoBackOffPolicy in project today-framework by TAKETODAY.
the class RetryTemplateBuilder method noBackoff.
/**
* Do not pause between attempts, retry immediately.
*
* @return this
* @see NoBackOffPolicy
*/
public RetryTemplateBuilder noBackoff() {
Assert.isNull(this.backOffPolicy, "You have already selected backoff policy");
this.backOffPolicy = new NoBackOffPolicy();
return this;
}
use of cn.taketoday.retry.backoff.NoBackOffPolicy in project today-framework by TAKETODAY.
the class RetryTemplateBuilder method build.
/* ---------------- Building -------------- */
/**
* Finish configuration and build resulting {@link RetryTemplate}. For default
* behaviour and concurrency note see class-level doc of {@link RetryTemplateBuilder}.
* The {@code retryPolicy} of the returned {@link RetryTemplate} is always an instance
* of {@link CompositeRetryPolicy}, that consists of one base policy, and of
* {@link BinaryExceptionClassifierRetryPolicy}. The motivation is: whatever base
* policy we use, exception classification is extremely recommended.
*
* @return new instance of {@link RetryTemplate}
*/
public RetryTemplate build() {
RetryTemplate retryTemplate = new RetryTemplate();
// Exception classifier
BinaryExceptionClassifier exceptionClassifier = classifierBuilder != null ? classifierBuilder.build() : BinaryExceptionClassifier.defaultClassifier();
if (this.baseRetryPolicy == null) {
this.baseRetryPolicy = new MaxAttemptsRetryPolicy();
}
CompositeRetryPolicy finalPolicy = new CompositeRetryPolicy();
finalPolicy.setPolicies(new RetryPolicy[] { baseRetryPolicy, new BinaryExceptionClassifierRetryPolicy(exceptionClassifier) });
retryTemplate.setRetryPolicy(finalPolicy);
if (this.backOffPolicy == null) {
this.backOffPolicy = new NoBackOffPolicy();
}
retryTemplate.setBackOffPolicy(this.backOffPolicy);
if (this.listeners != null) {
retryTemplate.setListeners(this.listeners.toArray(new RetryListener[0]));
}
return retryTemplate;
}
Aggregations