Quartz 스케줄러 + 스프링 부트 예제
Quartz 스케줄러 + 스프링 부트 예제.
Spring 부트와 Quartz 스케줄러 의 통합. Java Quartz 스케줄러 cron 표현식 예제. Spring 쿼츠 스케줄러 postgresql 데이터베이스 예제. 석영 스케줄러:
- Quartz는 풍부한 기능을 갖춘 오픈 소스 작업 스케줄링 라이브러리입니다.
- Quartz는 여러 작업을 실행하기 위한 단순하거나 복잡한 일정을 만드는 데 사용할 수 있습니다.
- Quartz 라이브러리를 사용하여 작업을 즉시 실행하거나 나중에 실행할 수 있는 스케줄을 지정할 수 있습니다.
- Quartz는 또한 "5분마다 작업 실행" 또는 "매주 월요일 오후 3시에 작업 실행" 등과 같이 복잡한 작업을 예약할 수 있는 cron 표현식을 허용합니다 .
스프링 부트:
- Spring Boot는 (Spring + Configuration) 번들로 애플리케이션을 더 빠르게 개발할 수 있도록 도와줍니다.
- 스프링 부트는 많은 구성을 처리하고 개발자가 비즈니스에 집중할 수 있도록 도와줍니다.
- 여기에는 내장된 바람둥이(또는 부두) 서버가 포함됩니다.
Spring Boot 및 Quartz 스케줄러가 작동 중입니다.
Spring Boot가 있는 Quartz Scheduler의 전체 소스 코드: Github 페이지에서 샘플 앱 다운로드: https://github.com/javabypatel/spring-boot-quartz-demo 샘플 애플리케이션 직접 다운로드 링크: https://github.com/javabypatel/ spring-boot-quartz-demo/archive/master.zip 사용 예,
- 스프링 부트 1.5.7
- 석영 2.2.3
- PostgreSQL 9.4.1208
- 각도2
응용 프로그램은 다음을 사용할 수 있는 Angular2 UI를 제공합니다.
- 간단한 석영 작업을 예약합니다.
- Cron Quartz 작업을 예약합니다.
- Quartz 작업을 일시 중지 합니다.
- 석영 작업 재개
- 수정 작업을 수정합니다.
- Quartz 작업을 삭제합니다.
- Quartz 작업 일정을 취소합니다.
- 석영 작업을 중지 합니다.
- 작업이 현재 실행 중인지 확인하십시오.
- Quartz Job의 현재 상태를 가져옵니다.
- 모든 예약된 작업 목록을 가져옵니다.
- 작업 시작 전후에 작업을 수행하기 위한 작업 및 트리거 리스너, 리스너는 응용 프로그램 종료 등으로 인한 작업 오작동의 경우 조치를 취하는 데 도움이 됩니다.
석영 스케줄러가 작동합니다.
Quartz는 작업 및 트리거의 개념에 대해 작업합니다.
- Job은 이벤트가 발생했을 때 실행되어야 하는 모든 것입니다.
- Trigger는 기본적으로 이 이벤트가 발생해야 하는 시간을 포함하는 이벤트입니다.
JOB은 TRIGGER에 의해 바인딩됩니다. 트리거 이벤트가 발생하면 연관된 작업을 실행합니다.
트리거에는 2가지 유형이 있으며,
- 단순 트리거
- 크론 트리거
단순 트리거: 특정 시간에 정확히 한 번 작업을 실행하거나 특정 시간에 특정 간격으로 반복해야 하는 경우 SimpleTrigger가 사용됩니다. 예를 들어, 2015년 1월 13일 오전 11시 23분 54초에 트리거를 실행하거나 그 시간에 트리거를 실행한 다음 10초마다 5번 더 실행하려는 경우입니다. Cron Trigger: CronTrigger는 종종 SimpleTrigger보다 더 유용합니다. 정확히 지정된 간격이 아니라 달력과 같은 개념을 기반으로 반복되는 작업을 실행해야 하는 경우와 같이 복잡한 시간이 있는 작업을 예약하는 데 사용됩니다.
CronTrigger를 사용하면 "매주 금요일 정오", "매주 평일 오전 9시 30분" 또는 "매주 월요일, 수요일 오전 9시에서 오전 10시 사이 5분마다"와 같은 실행 일정을 지정할 수 있습니다. 그리고 1월의 금요일". 다음은 예제에서 사용되는 몇 가지 석영 방법입니다.
1 2 삼 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
데모 응용 프로그램은 또한 Quartz 수신기에 대해 설명합니다 . Quartz 에는 두 가지 유형의 수신기가 있습니다.
- Quartz 작업 수신기.
- 석영 트리거 리스너.
리스너는 이벤트에서 실행되는 콜백 메서드입니다.
작업이 시작되기 전이나 작업이 완료될 때 또는 애플리케이션 종료로 인해 트리거가 잘못 실행되었을 때 작업을 수행하려는 경우 Quartz 리스너가 도움이 될 것입니다.
Github 페이지에서 샘플 앱 다운로드:
https://github.com/javabypatel/spring-boot-quartz-demo
샘플 애플리케이션 직접 다운로드 링크:
https://github.com/javabypatel/spring-boot-quartz-demo/archive/ 마스터.zip
Eclipse에서 Quartz Scheduler + Spring Boot + Angular2 프로젝트 설정.
- github에서 프로젝트를 다운로드합니다.
- "Import" > "Existing Maven Project"를 사용하여 Eclipse에서 프로젝트를 가져옵니다.
- 가져오기가 제대로 완료되고 모든 종속성이 다운로드되면 프로젝트는 아래와 같이 표시됩니다.
환경에서 애플리케이션 실행
Eclipse에서 프로젝트를 설정한 후,
- 샘플 응용 프로그램은 PostgreSQL 데이터베이스를 사용하므로 동일하게 사용하려면 PostgreSQL 데이터베이스 서버 를 설치 하십시오 . (다른 데이터베이스를 사용할 계획이라면 적절한 데이터베이스 드라이버를 로드하기 위해 pom.xml 에서, 데이터베이스 경로를 제공하기 위해 application.properties 파일에서, 각 Delegate 클래스를 로드하기 위해 quartz.properties에서 각각 변경하십시오)
pom.xml.
1 2 삼 4 5 6 7 |
|
application.properties
1 2 삼 4 5 6 7 8 9 10 11 12 |
|
석영.속성
1 2 |
|
Delegate 클래스가 아래에서 온 경우 Quartz 사이트에서 찾아야 하는 다른 클래스를 사용합니다. "org.quartz.impl.jdbcjobstore" 패키지 또는 모든 지원 대리인에 대한 하위 패키지에서 볼 수 있습니다.
- DB2v6Delegate(DB2 버전 6 이하의 경우)
- HSQLDBDelegate(HSQLDB용),
- MSSQLDelegate(Microsoft SQLServer용)
- PostgreSQLDelegate(PostgreSQL용),
- WeblogicDelegate (Weblogic에서 만든 JDBC 드라이버 사용용)
- OracleDelegate(오라클 사용용).
데이터베이스 이름 "quartzdemoapp" 생성(다른 이름을 사용하려면 "quartzdemoapp"을 해당 이름으로 바꾸어 application.properties 파일에 동일한 데이터베이스 이름을 지정하십시오)
관리자 모드에서 명령 프롬프트를 엽니다.
"ui-app" 폴더로 이동하여 아래와 같이 "npm install" 명령을 실행합니다. (node와 npm이 설치되어 있는지 확인하십시오.)
"ui-app" 폴더로 이동하여 아래와 같이 "npm run server" 명령을 실행합니다.
이 단계는 서버를 시작하고 ui-app이 배포됩니다.
브라우저를 열고 http://localhost:8080/ 을 누르면 위와 같은 응용 프로그램 UI가 표시되며 이는 단순 작업과 크론 수정 작업을 모두 예약하는 데 사용됩니다.
"SpringBootQuartzAppApplication.java" 를 클릭하여 Spring-boot 애플리케이션 시작 > 마우스 오른쪽 버튼으로 클릭, "Java 애플리케이션"으로 실행
참고: 서버는 localhost 및 포트 7080에서 호스팅됩니다. ( http://localhost:7080/)
메모:
- 클라이언트 애플리케이션이 포트 8080에서 수신 대기 중입니다.
- 서버 응용 프로그램이 포트 7080에서 수신 대기 중입니다.
application.properties 파일에서 변경하여 서버 애플리케이션 포트를 변경할 수 있습니다.
server.port=your_application_port
2개의 응용 프로그램을 별도로 실행하지 않으려면 typescript 파일을 javascript로 변환하고 해당 파일을 아래와 같이 웹 응용 프로그램에 넣으십시오.
typescript 파일을 javascript 파일로 변환하려면
- 명령 프롬프트를 열고 ui-app 폴더로 이동하여 " npm run build "를 실행합니다.
- 위의 단계 후에 " ui-app " 폴더 안에 생성된 " target " 폴더 가 보일 것입니다. 이 파일을 target 폴더 안에 복사하고 WEB-INF 폴더 외부의 웹 애플리케이션에 붙여넣고 서버 애플리케이션을 실행합니다.
구성 파일.
3개의 구성 파일이 있으며,
- application.properties
- 데이터.sql
- 석영.속성
application.properties :
아래와 같이 서버와 데이터베이스에 대한 설정을 담고 있습니다.
1 2 삼 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
data.sql :
Quartz는 작업과 트리거를 데이터베이스에 저장해야 합니다. data.sql에는 쿼츠가 스케줄러를 관리하는 데 필요한 테이블을 생성하는 SQL 스크립트가 포함되어 있습니다. 석영 속성 :
1 2 삼 4 5 6 7 8 9 10 11 |
|
출처 : https://javabypatel.blogspot.com/2017/10/quartz-scheduler-spring-boot-example.html
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.