[SPRING] Spring 3.2 "@Scheduled"주석에 대한 예외 처리
SPRINGSpring 3.2 "@Scheduled"주석에 대한 예외 처리
봄에서 "@Scheduled"주석에 대한 예외 처리를 사용자 정의하는 방법은 무엇입니까?
서버 (Tomcat 6)에서 트리거되는 cron 작업이 있으며 예외가 발생하면 처리해야합니다.
봄 버전 3.2 톰캣 서버 6
해결법
-
==============================
1.스케쥴링 어노테이션에 사용되는 ThreadPoolTaskScheduler에 대한 ErrorHandler를 구현하고 등록 할 수 있습니다.
스케쥴링 어노테이션에 사용되는 ThreadPoolTaskScheduler에 대한 ErrorHandler를 구현하고 등록 할 수 있습니다.
<task:annotation-driven scheduler="yourThreadPoolTaskScheduler" /> <bean id="yourThreadPoolTaskScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler"> <property name="poolSize" value="5" /> <property name="errorHandler" ref="yourScheduledTaskErrorHandler" /> </bean> <bean id="yourScheduledTaskErrorHandler" class="com.example.YourScheduledTaskErrorHandler"/>
-
==============================
2.Java Config를 사용하려면 SchedulingConfigurer를 구현하는 구성을 만들어야합니다.
Java Config를 사용하려면 SchedulingConfigurer를 구현하는 구성을 만들어야합니다.
@EnableScheduling @Configuration class SchedulingConfiguration implements SchedulingConfigurer { private final Logger logger = LoggerFactory.getLogger(getClass()); private final ThreadPoolTaskScheduler taskScheduler; SchedulingConfiguration() { taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setErrorHandler(t -> logger.error("Exception in @Scheduled task. ", t)); taskScheduler.setThreadNamePrefix("@scheduled-"); taskScheduler.initialize(); } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskScheduler); } }
필요에 따라 오류 처리기를 수정할 수 있습니다. 여기에는 메시지 만 기록합니다.
taskScheduler.initialize ();를 호출하는 것을 잊지 마십시오. 그것 없이는 얻을 것이다 :
java.lang.IllegalStateException: ThreadPoolTaskScheduler not initialized
-
==============================
3.비즈니스 로직을 랩핑하고 @schedule 메소드에서 간단한 try catch를 사용해 보시지 않겠습니까? 그런 다음 실패 사례에 필요한 조치를 기록하거나 취할 수 있습니다.
비즈니스 로직을 랩핑하고 @schedule 메소드에서 간단한 try catch를 사용해 보시지 않겠습니까? 그런 다음 실패 사례에 필요한 조치를 기록하거나 취할 수 있습니다.
@Scheduled(cron = "${schedulerRate}") public void scheduledJob() { try { businessLogicService.doBusinessLogic(); } catch (Exception e) { log.error(e); } }
from https://stackoverflow.com/questions/24031613/exception-handling-for-spring-3-2-scheduled-annotation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트 2.1 빈 오버라이드 대 기본 (0) | 2019.04.16 |
---|---|
[SPRING] 스프링 부트 1.2.3의 경우 JSON 직렬화에서 null 값을 무시하도록 설정하는 방법은 무엇입니까? (0) | 2019.04.16 |
[SPRING] 오류 발생 : JDBC 드라이버 클래스를로드 할 수 없습니다 [org.postgresql.Driver] (0) | 2019.04.16 |
[SPRING] Spring에서 문자열 배열을 빈에 삽입 (0) | 2019.04.16 |
[SPRING] 스프링 밸리데이션을 수동으로 트리거하는 방법은 무엇입니까? (0) | 2019.04.16 |