티스토리 뷰

Programming/Spring

RetryTemplate

Albothyl 2019. 7. 24. 20:03

비지니스로직을 처리할 때 Exception이 발생하는 경우가 있다. 이 때 에러를 무시할 수 도 있고, 잡아서 다시 처리해야할 때도 있다.

에러를 다시 처리해야할 경우 Spring에서 제공하는 RetryTemplate을 유용하게 사용할 수 있다.

Catch 할 Exceptions, Retry Period, Retry Max Count 등을 설정할 수있다.

 

사용방법은 아래와 같다.

 

//dependency (https://mvnrepository.com/artifact/org.springframework.retry/spring-retry/1.3.0)
compile group: 'org.springframework.retry', name: 'spring-retry', version: '1.3.0'

//Some Configuration Class
@Bean
public RetryTemplate someRetryTemplate() {
	FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
	backOffPolicy.setBackOffPeriod(1); //지정한 시간만큼 대기후 재시도 한다.

//	ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
//	backOffPolicy.setInitialInterval(100L); //millisecond
//	backOffPolicy.setMultiplier(2); //interval * N 만큼 대기후 재시도 한다.

	SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
	retryPolicy.setMaxAttempts(2); //retry max count

	RetryTemplate retryTemplate = new RetryTemplate();
	retryTemplate.setBackOffPolicy(backOffPolicy);
	retryTemplate.setRetryPolicy(retryPolicy);

	return retryTemplate;
}

@Service
public class SomeClass {

	@Autowired
	private RetryTemplate someRetryTemplate;

	@Autowired
	private SomeLogic someLogic;

	private String apply(SomeEntity someEntity) {
		String result = someRetryTemplate.execute(context -> someLogic.apply(someEntity));

		return result;
	}
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함