250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 머신러닝
- Zeppelin
- vue
- config
- 로그인
- java
- redash
- gradle
- 간단
- Kafka
- Redis
- spring
- Jenkins
- 젠킨스
- ec2
- login
- fastcampus
- 자동
- 자바
- SpringBoot
- EMR
- 예제
- Mac
- hive
- Cluster
- 클러스터
- 레디스
- Docker
- 설정
- aws
Archives
- Today
- Total
코알못
5분 안에 구축하는 Quartz 동적 스케쥴링 본문
728x90
# Quartz 란?
- Job Scheduling 라이브러리
- 스프링에서 지원하고 있어 쉽게 구축 가능
- 전체 예제 코드
:: github.com/works-code/dynamic-schedule
# 개발 환경
- mac os catalina
- java 15
- spring boot 2.4.0
- gradle 6.6.1
# 프로젝트 구조
모듈명 | 설명 |
module-01 | 스케쥴을 동작하는 1번 모듈 - module-01 이라는 문구를 출력하는 스케쥴을 등록함 |
module-02 | 스케쥴을 동작하는 2번 모듈 - module-01 이라는 문구를 출력하는 스케쥴을 등록함 |
core-utils | 공통된 소스가 있는 모듈 - 요청한 오류 코드에 맞는 문구를 가져와 출력 - 스케쥴을 등록하는 공통 소스 - 스케쥴을 처리하는 공통 소스 |
data-store | 데이터(DB 조회, 수정, 삭제)와 관련된 부분 |
# API 설명
API 명 | 설명 |
/register | 스케쥴을 등록하는 API |
/delete | 스케쥴을 삭제하는 API |
/update | 스케쥴을 업데이트 하는 API |
/getRegisteredJobList | 등록된 스케쥴을 조회하는 API |
# 테이블 구조
CREATE TABLE `TBL_JOB_SCHEDULE` (
`trigger_id` int NOT NULL AUTO_INCREMENT COMMENT 'uniq job id',
`job_name` varchar(40) DEFAULT NULL COMMENT '배치 명',
`trigger_cron` varchar(40) DEFAULT NULL COMMENT '배치 시간 (cron 형식)',
`active_yn` char(1) DEFAULT 'N' COMMENT '배치 활성 여부',
`app_nm` varchar(40) DEFAULT NULL COMMENT '배치가 적용 될 앱 명',
PRIMARY KEY (`trigger_id`)
)
# 데이터
- 프로젝트 기동시 active_yn이 'Y' 로 되어 있는 스케쥴을 trigger_cron(스케쥴)에 맞게 자동 등록 ('N' 이면 배치를 등록하지 않는다.)
- app_nm 은 모듈 이름으로 모듈별로 스케쥴이 시작된다.
-> 예) module-01 번 시작시 trigger_id 가 1번인 스케쥴만 시작 된다.
- trigger_id 로 스케쥴을 구분한다.
# 테스트
1. module 01번 실행시 1초마다 'modle01' 을 출력함
2. 등록된 잡 조회
- 아래와 같이 등록된 스케쥴이 나옴
3. 스케쥴 시간 변경
- 변경 된 시점부터 2초 간격으로 프린트 되는 것을 확인
- 잘못된 형식으로 요청시 오류 메세지 리턴
4. 스케쥴 삭제
- 정상적으로 삭제 된 뒤 메세지가 출력되지 않음을 확인
- 등록된 스케쥴 조회 API 호출시 등록된 잡이 없는 것을 확인
5. 잡 등록
- 등록하고 나서 정상적으로 출력 됨을 확인
- 등록된 잡을 재등록 했을시 오류 메세지 리턴
728x90
'JAVA' 카테고리의 다른 글
5분 안에 구축하는 Redis(레디스) (1) | 2021.02.15 |
---|---|
[에러] NoClassDefFoundError: com/fasterxml/jackson/databind/JsonSerializer (0) | 2021.02.15 |
[설치/설정] 5분 안에 설정 하는 Mac에 자바 여러 버전 설치/설정 (3) | 2021.01.30 |
5분 안에 구축하는 Ehcache (0) | 2020.11.28 |
5분 안에 구축하는 Rabbitmq (0) | 2020.11.28 |
Comments