Grails 에서 Quartz 플러그 인 을 사용 하여 정시 작업 을 수행 합 니 다.

Quartz 플러그 인 은 Grails 프로그램 이 지정 한 시간 간격 이나 cron 표현 식 에 따라 스케줄 링 작업 을 수행 할 수 있 습 니 다.Grails 시스템 은 spring 설정 을 통 해 Quartz Enterprise Job Scheduler 를 사용 하여 이 루어 지지 만 인 코딩 시 규정 에 따라 쉽게 이 루어 집 니 다.
Grails - Quartz 0.4.1 은 현재 안정 적 인 버 전 입 니 다.Grails - Quartz 0.4.2 는 최신 개발 중인 버 전이 다.(이미 발표)
 
1 플러그 인 설치
응용 폴 더 경로 에서 다음 명령 을 입력 하 십시오.
grails install-plugin quartz
만약 이상 의 명령 이 어떤 이유 로 안 된다 면 아래 의 이것 을 시험 해 보 세 요.
grails install-plugin http://cloud.github.com/downloads/nebolsin/grails-quartz/grails-quartz-0.4.1.zip
 
2  사용법
작업 스케줄 링 (작업 스케줄 링)
 
 
명령 행 에 "grails create - job" 명령 을 입력 하고 작업 이름 을 입력 하면 Grails 는 새로운 작업 을 만 들 고 "grails - app / jobs" 경로 에 놓 습 니 다.
class MyJob {   static triggers = {     simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000    }
  def group = "MyGroup"
  def execute(){     print "Job run!"   } }
 
위의 예 는 1 분 후에 1 초 에 한 번 씩 execute 방법 을 호출 합 니 다. 'repeat Interval' 과 'startDelay' 속성의 단 위 는 밀리초 이 며, 값 은 int 또는 long 이 어야 합 니 다. 이 두 속성 이 지정 되 지 않 으 면 기본 값 (repeat Interval 은 1 분, startDelay 는 30 초) 을 사용 합 니 다.
jobs 기본 상황 에서 test 환경 에서 실행 되 지 않 습 니 다.
Cron 작업 스케줄 링 (Cron 작업 예약)
 
 
cron 표현 식 으로 작업 을 예약 할 수 있 습 니 다.
class MyJob  {   static triggers = {     cron name: 'myTrigger', cronExpression: "0 0 6 * * ?"   } def group = "MyGroup" def execute(){ print "Job run!" }
 }
 
조합 트리거 작업
 
 
조합 트리거 로 작업 을 예약 할 수 있 습 니 다.
class MyJob {
    static
 triggers = {
        simple name:'simpleTrigger', startDelay:10000, repeatInterval: 30000, repeatCount: 10
        cron name:'cronTrigger', startDelay:10000, cronExpression: '0/6 * 15 * * ?'
        custom name:'customTrigger', triggerClass:MyTriggerClass, myParam:myValue, myAnotherParam:myAnotherValue
    }

def execute() { println "Job run!" } }
위의 예 에서 scheduler (스케줄 러) 가 시 작 된 지 10 초 후에 job 는 30 초 마다 한 번 씩 실 행 됩 니 다. 모두 11 번 (simpleTrigger) 을 실 행 했 습 니 다. 15 시 에 6 초 에 한 번 (15: 00: 00, 15: 00: 06, 15: 00: 12,... - 이것 은 'cronTrigger' 가 설정 한 것) 을 실 행 했 습 니 다.
 
세 가지 트리거 가 지원 할 수 있 는 매개 변 수 는 다음 과 같다.
  • simple :
  • name - 트리거 의 명칭 표지
  • startDelay - 스케줄 러 시작 과 첫 번 째 작업 수행 사이 의 간격 (단위: 밀리초)
  • repeatInterval - 두 번 연속 임무 수행 사이 의 시간 간격 (단위: 밀리초)
  • repeatCount - 퀘 스 트 수행 (1 + repeatCount) 회 후 정지 (= 0 1 회 실행 또는 = -1 집행 무한 회)
  • cron :
  • name - 트리거 의 명칭 표지
  • startDelay - 스케줄 러 시작 과 첫 번 째 작업 수행 사이 의 간격 (단위: 밀리초)
  • cronExpression - cron 표현 식
  • custom :
  • triggerClass - Trigger 인 터 페 이 스 를 사용자 정의 로 실현 한 클래스
  • 트리거 에 필요 한 다른 매개 변수 사용자 정의

  • 동적 작업 스케줄 링 (동적 작업 스케줄 링)
     
     
    0.4.1 버 전부터 동적 스케줄 링 작업 을 사용 할 수 있 습 니 다.
    다음 방법 을 사용 할 수 있 습 니 다:
  • MyJob.schedule(String cronExpression, Map params?) - cron 트리거 만 들 기;
  • MyJob.schedule(Long repeatInterval, Integer repeatCount?, Map params?) - simple 트리거 만 들 기: 간격 repeatInterval 밀리초 반복 job repeatCount + 1 회;
  • MyJob.schedule(Date scheduleDate, Map params?) - 지 정 된 날짜 에 하나의 임 무 를 수행 합 니 다.
  • MyJob.schedule(Trigger trigger) - 사용자 정의 트리거 로 작업 을 수행 합 니 다.
  • MyJob.triggerNow(Map params?) - 강제 임 무 를 즉시 수행 합 니 다.
  • 모든 방법 은 선택 할 수 있 는 'params' 인 자 를 가지 고 있 습 니 다. 이 를 통 해 데 이 터 를 전달 할 수 있 습 니 다.
    class MyJob { 
    
      …
    
      def execute(context) {
    
        println context.mergedJobDataMap.get('foo')
    
      }
    
      …
    
    }

    / / controller (또는 service, 또는 다른 곳 에서):
    MyJob.triggerNow([foo:"It Works!" ])
     
    주입 및 jobs 의존 (Dependency Injection and Jobs)
     
    Jobs 는 이름 에 따라 자동 으로 연결 (auto - wiring by name) 하도록 설정 되 어 있 으 며, 속성 은 jobs 에 주입 할 수 있 습 니 다. data source 를 가 져 오기 위해 설명 할 수 있 습 니 다.
     
    def dataSource
    서비스 클래스
    def myService
    Grails application context        ,                     (            )。

    JobExecutionContext 사용 (JobExecutionContext 사용)
    0.3.2 부터 job 에서 execute 방법 def execute (context) {} 을 정의 할 수 있 습 니 다. 이것 은 Quartz 's JobExecution Context 에서 제공 합 니 다.context.getMergedJobDataMap() 를 통 해 job 에 인 자 를 제공 하 는 것 처럼 context 에서 일부 정 보 를 얻 을 수 있 습 니 다 (트리거 이름, 마지막 실행 시간.
    다음 실행 시간 등). 만약 당신 의 job 가 상태 가 있다 면, JobExecution Context 의 job 데 이 터 는 매번 job 를 실행 할 때마다 지 속 됩 니 다.
     
    플러그 인 설정 (플러그 인 구성)
     
    0.3 버 전부터 플러그 인 은 설정 파일 을 지원 합 니 다. 설정 내용 은 grails-app/conf/QuartzConfig.groovy 。 Grails Config.groovy 에 저 장 됩 니 다. 명령 행 에 'grails install-quartz-config', Quartz 설정 파일 을 입력 하 십시오. 파일 내용 은 다음 과 같 습 니 다. quartz {autoStartup = true jdbc Store = false}
    environments {
        test {
                quartz {
                         autoStartup = false
                           }
                }
    }
  • autoStartup - 시작 할 때 Quartz 스케줄 러 를 자동 으로 시작 합 니 다 (기본 값: true
  • jdbcStore - Quartz 영구 화 jobs 가 DB 에 필요 할 때 true (기본 값: false, quartz.properties 파일 로 설정 하고 필요 한 데이터 시트 가 db 에 존재 한다 고 확신 합 니 다 (see Clustering section below for the sample config and automatic tables creation using Hibernate)
  • grails-app/conf/quartz.properties Quartz 스케줄 러 (Quartz 구성 참조
    ).
     
    로그 (로 깅)
    log 는 job 클래스 에 자동 으로 주입 되 지만 활성화 되 지 않 았 습 니 다. grails - app / conf / config. groovy 에 다음 문 구 를 설정 하면 log 단 계 를 설정 할 수 있 습 니 다.
    debug 'grails.app.task'
     
    Hibernate 세 션 과 작업 (Hibernate Sessions and Jobs)
    기본 설정 은 job 가 실 행 될 때마다 Hibernate 세 션 을 연결 합 니 다. open session 이나 domain 류 의 지속 적 인 동작 을 하려 면 필수 입 니 다.
    만약 당신 이 사용 하지 않 는 다 면, 'session Required' 속성 을 사용 하여 이 행 위 를 다시 불 러 올 수 있 습 니 다.
    def sessionRequired = false
     
    동시 실행 설정 (동시 실행 구성)
    기본 Jobs 는 동시에 실행 할 수 있 습 니 다. 따라서 이전 작업 이 실행 되 고 있 더 라 도 새로운 작업 을 만 들 고 실행 할 수 있 습 니 다. 이 동작 을 다시 불 러 오 려 면 'concurrent' 속성 을 사용 할 수 있 습 니 다.
    def concurrent = false

    좋은 웹페이지 즐겨찾기