Grails整合Quartz外掛實現定時任務(Job)

Genee發表於2019-01-18

build.gradle依賴:

//定時器
compile 'org.grails.plugins:quartz:2.0.0.M4'
複製程式碼

建立一個job,執行命令:

create-job com.test.Test
複製程式碼

修改TestJob:

package com.test

class TestJob {

static triggers = {}

    def execute(context) {
        // execute job
        println "執行..."
        
        // 獲取傳遞過來的引數
        def msg = context.mergedJobDataMap.get("tip")
        println msg
    }
}
複製程式碼

控制器中動態呼叫:

def personPush() {
    println "xxxxx"
    
    // 傳參到job中
    TestJob.schedule(new Date(),[tip: "執行了定時器。。。"])
}
複製程式碼

暫停定時任務

def jobManagerService

def index() {
    // 停止所有定時任務
    jobManagerService.pauseAll()
    render "Stop all Job."
}
複製程式碼

恢復定時任務

jobManagerService.resumeAll()
複製程式碼

JobManagerService服務中常用方法

Map <String , List<JobDescriptor>> getAllJobs() {}

List<JobDescriptor> getJobs(String group) {}

def getRunningJobs() {}

def pauseJob(String group, String name) {}

def resumeJob(String group, String name) {}

def pauseTrigger(String group, String name) {}

def resumeTrigger(String group, String name) {}

def pauseTriggerGroup(String group) {}

def resumeTriggerGroup(String group) {}

def pauseJobGroup(String group) {}

def resumeJobGroup(String group) {}

def pauseAll() {}

def resumeAll() {}

def removeJob(String group, String name) {}

def unscheduleJob(String group, String name) {}

def interruptJob(String group, String name) {}

複製程式碼
  • 可自行檢視grails.plugins.quartz.JobManagerService

方法:

MyJob.schedule(String cronExpression, Map params) // 建立cron觸發器
MyJob.schedule(Long repeatInterval, Integer repeatCount, Map params) // 建立簡單的觸發器:以repeatInterval毫秒的延遲重複作業repeatCount + 1次
MyJob.schedule(Date scheduleDate, Map params) // 將一個作業執行安排到特定日期
MyJob.schedule(Trigger trigger) // 使用自定義觸發器來安排作業的執行
MyJob.triggerNow(Map params) // 強制立即執行工作
複製程式碼

相關文章