Clean Code that Works.


스프링에서는 다양한 방법으로 스케쥴링을 지원 한다.
Task Execution and scheduling

프로젝트 진행을 하다 보면 스케쥴링을 해야 하는 경우가 많은데(조직도 라던지, 트리거 형식으로 라던지)
아무튼 이런 경우에, 현재 작동중인 Job들을 확인 하고 이를 제어 할 수 있는 것을 해보고 싶어서 해 보았다.

어차피 스케쥴링이라는게 쓰레드이기 때문에 쓰레드를 조회 해서 제어할 수도 있지만, (모든 쓰레드가 표시되서 제어가 힘들다)
기선님이 알려주신 쓰레드 리스트 보는 방법
스프링에서 Quartz 가 지원 되기 때문에 이것을 사용해서 하기로 했다.

하여 결과를 보면, 일단 아래와 같이 구현을 하였다.


구조를 살펴보면
스케쥴러 > 트리거 그룹 > 트리거 > 잡 그룹 > 잡
이런 형식으로 되어 있었다.

일단 잡 그룹으로만 나누어서 스케쥴링을 한다고 생각하고 위와같이 구현 하였다.
각 잡 들 마다 정지, 시작 기능이 있고,
이를 총괄하는 스케쥴러에 대한 정지, 시작 기능이 있다.

트리거 그룹이나 트리거 들에 대한 제어도 각각 추가할 수 있다.(세부 구현 내용이 많아진다.)
사이트 환경에 맞추어 하면 될듯 싶다.(보통 잡 그룹을 여러개 두고, 잡으로 나누어서 하면 될것 같다.)


설정 파일에서 보듯이 jobScheduler를 가지고 하위 잡 정보들을 가져와서 이를 가지고 보여줄 데이터를 만들던가, 잡 들을 조작 하면 된다.