Quartz 스케줄러 + 스프링 부트 예제

in #kr-dev3 years ago

Quartz 스케줄러 + 스프링 부트 예제.


Spring 부트와 Quartz 스케줄러 의 통합. Java Quartz 스케줄러 cron 표현식 예제. Spring 쿼츠 스케줄러 postgresql 데이터베이스 예제. 석영 스케줄러:

  1. Quartz는 풍부한 기능을 갖춘 오픈 소스 작업 스케줄링 라이브러리입니다.
  2. Quartz는 여러 작업을 실행하기 위한 단순하거나 복잡한 일정을 만드는 데 사용할 수 있습니다.
  3. Quartz 라이브러리를 사용하여 작업을 즉시 실행하거나 나중에 실행할 수 있는 스케줄을 지정할 수 있습니다.
  4. Quartz는 또한 "5분마다 작업 실행" 또는 "매주 월요일 오후 3시에 작업 실행" 등과 같이 복잡한 작업을 예약할 수 있는 cron 표현식을 허용합니다 .

스프링 부트:

  1. Spring Boot는 (Spring + Configuration) 번들로 애플리케이션을 더 빠르게 개발할 수 있도록 도와줍니다.
  2. 스프링 부트는 많은 구성을 처리하고 개발자가 비즈니스에 집중할 수 있도록 도와줍니다.
  3. 여기에는 내장된 바람둥이(또는 부두) 서버가 포함됩니다.

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. 스프링 부트 1.5.7
  2. 석영 2.2.3
  3. PostgreSQL 9.4.1208
  4. 각도2

응용 프로그램은 다음을 사용할 수 있는 Angular2 UI를 제공합니다.

  1. 간단한 석영 작업을 예약합니다.
  2. Cron Quartz 작업을 예약합니다.
  3. Quartz 작업을 일시 중지 합니다.
  4. 석영 작업 재개
  5. 수정 작업을 수정합니다.
  6. Quartz 작업을 삭제합니다.
  7. Quartz 작업 일정을 취소합니다.
  8. 석영 작업을 중지 합니다.
  9. 작업이 현재 실행 중인지 확인하십시오.
  10. Quartz Job의 현재 상태를 가져옵니다.
  11. 모든 예약된 작업 목록을 가져옵니다.
  12. 작업 시작 전후에 작업을 수행하기 위한 작업 및 트리거 리스너, 리스너는 응용 프로그램 종료 등으로 인한 작업 오작동의 경우 조치를 취하는 데 도움이 됩니다.

석영 스케줄러가 작동합니다.


Quartz는 작업 및 트리거의 개념에 대해 작업합니다.

  1. Job은 이벤트가 발생했을 때 실행되어야 하는 모든 것입니다.
  2. Trigger는 기본적으로 이 이벤트가 발생해야 하는 시간을 포함하는 이벤트입니다.

JOB은 TRIGGER에 의해 바인딩됩니다. 트리거 이벤트가 발생하면 연관된 작업을 실행합니다.

트리거에는 2가지 유형이 있으며,

  1. 단순 트리거
  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

package com.javabypatel.demo.service;

import java.util.Date;

import java.util.List;

import java.util.Map;

import org.springframework.scheduling.quartz.QuartzJobBean;

public interface JobService {

 boolean scheduleOneTimeJob(String jobName, Class<? extends QuartzJobBean> jobClass, Date date);

 boolean scheduleCronJob(String jobName, Class<? extends QuartzJobBean> jobClass, Date date, String cronExpression);

 boolean updateOneTimeJob(String jobName, Date date);

 boolean updateCronJob(String jobName, Date date, String cronExpression);

 boolean unScheduleJob(String jobName);

 boolean deleteJob(String jobName);

 boolean pauseJob(String jobName);

 boolean resumeJob(String jobName);

 boolean startJobNow(String jobName);

 boolean isJobRunning(String jobName);

 List<Map<String, Object>> getAllJobs();

 boolean isJobWithNamePresent(String jobName);

 String getJobState(String jobName);

 boolean stopJob(String jobName);

}

데모 응용 프로그램은 또한 Quartz 수신기에 대해 설명합니다 . Quartz 에는 두 가지 유형의 수신기가 있습니다.

  1. Quartz 작업 수신기.
  2. 석영 트리거 리스너.

리스너는 이벤트에서 실행되는 콜백 메서드입니다.

작업이 시작되기 전이나 작업이 완료될 때 또는 애플리케이션 종료로 인해 트리거가 잘못 실행되었을 때 작업을 수행하려는 경우 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 프로젝트 설정.


  1. github에서 프로젝트를 다운로드합니다.
  2. "Import" > "Existing Maven Project"를 사용하여 Eclipse에서 프로젝트를 가져옵니다.
  3. 가져오기가 제대로 완료되고 모든 종속성이 다운로드되면 프로젝트는 아래와 같이 표시됩니다.

환경에서 애플리케이션 실행


Eclipse에서 프로젝트를 설정한 후,

  1. 샘플 응용 프로그램은 PostgreSQL 데이터베이스를 사용하므로 동일하게 사용하려면 PostgreSQL 데이터베이스 서버 를 설치 하십시오 . (다른 데이터베이스를 사용할 계획이라면 적절한 데이터베이스 드라이버를 로드하기 위해 pom.xml 에서, 데이터베이스 경로를 제공하기 위해 application.properties 파일에서, 각 Delegate 클래스를 로드하기 위해 quartz.properties에서 각각 변경하십시오)

pom.xml.

1

2

4

5

6

7

<!-- PostgreSQL driver dependency (Change below Postgresql driver dependency to driver of your database vendor.)-->

<dependency>

 <groupId>org.postgresql</groupId>

 <artifactId>postgresql</artifactId>

 <version>9.4.1208</version>

 <scope>runtime</scope>

</dependency>

application.properties

1

2

4

5

6

7

8

9

10

11

12

#--------------Enter Your Database Details below --------------

####### SPRING JPA ############

spring.jpa.database=POSTGRESQL

####### SPRING JPA ############

####### POSTGRES ############

spring.datasource.driver-class-name=org.postgresql.Driver

spring.datasource.url=jdbc:postgresql:

spring.datasource.username=postgres

spring.datasource.password=admin

####### POSTGRES ############

석영.속성

1

2

#--------------Enter appropriate Database Delegate class here --------------

org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

Delegate 클래스가 아래에서 온 경우 Quartz 사이트에서 찾아야 하는 다른 클래스를 사용합니다. "org.quartz.impl.jdbcjobstore" 패키지 또는 모든 지원 대리인에 대한 하위 패키지에서 볼 수 있습니다.

  1. DB2v6Delegate(DB2 버전 6 이하의 경우)
  2. HSQLDBDelegate(HSQLDB용),
  3. MSSQLDelegate(Microsoft SQLServer용)
  4. PostgreSQLDelegate(PostgreSQL용),
  5. WeblogicDelegate (Weblogic에서 만든 JDBC 드라이버 사용용)
  6. OracleDelegate(오라클 사용용).
  1. 데이터베이스 이름 "quartzdemoapp" 생성(다른 이름을 사용하려면 "quartzdemoapp"을 해당 이름으로 바꾸어 application.properties 파일에 동일한 데이터베이스 이름을 지정하십시오)

  2. 관리자 모드에서 명령 프롬프트를 엽니다.

  3. "ui-app" 폴더로 이동하여 아래와 같이 "npm install" 명령을 실행합니다. (node와 npm이 설치되어 있는지 확인하십시오.)

  4. "ui-app" 폴더로 이동하여 아래와 같이 "npm run server" 명령을 실행합니다.

    이 단계는 서버를 시작하고 ui-app이 배포됩니다.

  5. 브라우저를 열고 http://localhost:8080/ 을 누르면 위와 같은 응용 프로그램 UI가 표시되며 이는 단순 작업과 크론 수정 작업을 모두 예약하는 데 사용됩니다.

  6. "SpringBootQuartzAppApplication.java" 를 클릭하여 Spring-boot 애플리케이션 시작 > 마우스 오른쪽 버튼으로 클릭, "Java 애플리케이션"으로 실행
    참고: 서버는 localhost 및 포트 7080에서 호스팅됩니다. ( http://localhost:7080/)

메모:

  1. 클라이언트 애플리케이션이 포트 8080에서 수신 대기 중입니다.
  2. 서버 응용 프로그램이 포트 7080에서 수신 대기 중입니다.

application.properties 파일에서 변경하여 서버 애플리케이션 포트를 변경할 수 있습니다.
server.port=your_application_port

2개의 응용 프로그램을 별도로 실행하지 않으려면 typescript 파일을 javascript로 변환하고 해당 파일을 아래와 같이 웹 응용 프로그램에 넣으십시오.

typescript 파일을 javascript 파일로 변환하려면

  1. 명령 프롬프트를 열고 ui-app 폴더로 이동하여 " npm run build "를 실행합니다.
  2. 위의 단계 후에 " ui-app " 폴더 안에 생성된 " target " 폴더 가 보일 것입니다. 이 파일을 target 폴더 안에 복사하고 WEB-INF 폴더 외부의 웹 애플리케이션에 붙여넣고 서버 애플리케이션을 실행합니다.

구성 파일.


3개의 구성 파일이 있으며,

  1. application.properties
  2. 데이터.sql
  3. 석영.속성

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

server.port=7080

spring.application.name=Scheduledemo

####### SPRING JPA ############

spring.jpa.database=POSTGRESQL

spring.jpa.show-sql=true

spring.jpa.hibernate.ddl-auto=create-drop

####### SPRING JPA ############

####### POSTGRES ############

spring.datasource.driver-class-name=org.postgresql.Driver

#create the database by name "quartzdemoapp", here I am using postgresql running on port 5432.

#if you want other database, change the url.

spring.datasource.url=jdbc:postgresql:

#put your database username below

spring.datasource.username=postgres

#put your database password below

spring.datasource.password=admin   

####### POSTGRES ############

data.sql :

Quartz는 작업과 트리거를 데이터베이스에 저장해야 합니다. data.sql에는 쿼츠가 스케줄러를 관리하는 데 필요한 테이블을 생성하는 SQL 스크립트가 포함되어 있습니다. 석영 속성 :

1

2

4

5

6

7

8

9

10

11

org.quartz.scheduler.instanceName=springBootQuartzApp

org.quartz.scheduler.instanceId=AUTO

org.quartz.threadPool.threadCount=5

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

org.quartz.jobStore.useProperties=true

org.quartz.jobStore.misfireThreshold=60000

org.quartz.jobStore.tablePrefix=qrtz_

org.quartz.jobStore.isClustered=false

org.quartz.plugin.shutdownHook.class=org.quartz.plugins.management.ShutdownHookPlugin

org.quartz.plugin.shutdownHook.cleanShutdown=TRUE

출처 : https://javabypatel.blogspot.com/2017/10/quartz-scheduler-spring-boot-example.html

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.14
TRX 0.35
JST 0.035
BTC 115898.97
ETH 4685.52
SBD 0.86