본문 바로가기
web

ThreadPoolTaskExecutor RejectedException 발생

by Younji! 2017. 5. 31.

Executor 로 스레드 관리가 용이해졌는데, 

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html


이를 활용해서 비동기로 카프카에 이벤트 발생하여 전달하고 있다.



TaskExecutor 가 설정해놓은 사이즈(PoolSize , QueueCapacity) 를 초과하면 OOM 이 발생하여 RejectedException 이 발생하여 중요한 이벤트들이 reject 되어버린다.


RejectedExceptionHandler 기본값은 AbortPolicy(task reject 후에 throw exception)인데, ThreadPoolExecutor.CallerRunsPolicy를 설정하여 모니터링 시스템에 알림을 주는 동시에 이벤트를 Discard 시키지 않고 task를 자체적으로 수행한다. 이를 통해 바로 제출하지 않고 큐 여유공간을 확보할 수 있다. 



[참고 출처]

https://blog.outsider.ne.kr/1066

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.html






'web' 카테고리의 다른 글

ElasticSearch Index 질의(w/ python)  (0) 2022.06.07
Spring Cloud with Aws Secrets Manager  (0) 2020.02.03
대용랑 데이터 조회 처리  (0) 2016.04.28

댓글