[Quartz] Spring Scheduler TimeZone

S_H_H·2022년 10월 5일
0

Quartz And Batch

목록 보기
3/8

TimeZone

TimeZone이란?

시간대(時間帶,time zone)는 영국의 그리니치 천문대(본초 자오선, 경도 0도)를 기준으로 지역에 따른 시간의 차이, 다시 말해 지구의 자전에 따른 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 일컫는다. 그리니치 천문대를 기준으로 세계의 0시가 결정된다. - 위키백과

즉, 영국 그리니치 천문대 시간이 0시가 됩니다.
대한민국은 영국 그리니치 천문대를 기준으로 +9 시간 입니다. UTC+9로 표시합니다.

UTC는 Coordinated Universal Time 로 '협정 세계시' 를 말합니다.
GMT는 Greenwich Mean Time Zone 로 그리니치 천문대 시간을 뜻합니다.
UTC역시 그리니치 천문대 시간대로 기준 잡고있어, UTCGMT의 용어가 혼용되기도 합니다.

Scheduler TimeZone 적용

국내 해외 통합된 사이트를 만들다보면은 시간에 대한 기준이 필요하게 됩니다.
이런경우 UTC기준으로 각 국가의 시간을 계산하게 됩니다.

스케줄러도 마찬가지로 UTC기준으로 시간을 계산하여 실행합니다.
아래 코드와 같이 util.TimeZone으로 GMT기준으로 국가 시간을 설정 후

  <bean id="KRTimeZone" class="java.util.TimeZone" factory-method="getTimeZone">
    <constructor-arg value="GMT+9" />
  </bean>

그리고 실행할 JobtimeZone을 적용시켜면 됩니다.

  <bean id="testExcueteJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="jobClass" value="실행할 service"/>
    <property name="applicationContextJobDataKey" value="applicationContext"/>
	<property name="timeZone" ref="KRTimeZone" />
  </bean>

이렇게 설정하면 각 국가의 시간으로 실행할 수 있습니다.

JDBC 로 스케줄을 관리 중 이라면은
QRTZ_CRON_TRIGGERS 테이블의 TIME_ZONDE_ID의 값으로 결정됩니다.
해당 컬럼의 값을 Asia/Seoul가 아닌 다른 국가로 변경해주시면 됩니다.

profile
LEVEL UP

0개의 댓글