Grails 에서 Quartz 플러그 인 을 사용 하여 정시 작업 을 수행 합 니 다.
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?)
- 강제 임 무 를 즉시 수행 합 니 다. 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring 통합 Quartz의 간단한 구성 방법그러나 실제 업무에서 직접 그것을 사용하는 것은 매우 드물다.일반적으로spring-quartz 구성 요소를 사용하며, 직접 설정을 통해spring 프레임워크를 자동으로 조립합니다 다음은spring 프레임워크 통합qu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.