OpenSource/Spring

@Retryable

태하팍 2020. 11. 17. 15:02
반응형

특정 Exception이 발생하면 일정 횟수만큼 재시도 할 수 있는 어노테이션이다.

 

  • @EnableRetry 작성.(configuration 등)
  • 재시도 하고 싶은 메소드에 @Retryable 작성. 
    • include : 특정 Exception이 발생할 때 retry
    • exclude : 설정 된 Exception 재시도 제외
    • maxAttempts : 최대 재시도 횟수(default 3회)
    • backoff : 재시도 pause 시간

ex)  FailedStoreException 발생 시 최대 5번 시도! delay 10

@Retryable(value = { FailedStoreException.class }, maxAttempts = 5, backoff = @Backoff(delay = 10))

참고

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.retry.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Retryable {
    String interceptor() default "";

    Class<? extends Throwable>[] value() default {};

    Class<? extends Throwable>[] include() default {};

    Class<? extends Throwable>[] exclude() default {};

    String label() default "";

    boolean stateful() default false;

    int maxAttempts() default 3;

    String maxAttemptsExpression() default "";

    Backoff backoff() default @Backoff;

    String exceptionExpression() default "";
}
반응형