1

Grails で Quartz プラグインを使用するのは初めてで、単純なアプリケーションを実行したいと考えています。次のコードを使用しました (クォーツ プラグイン ドキュメントから) が、一度しか実行されません。何か案が?何か設定する必要がありますか?

ありがとう

class MyJob {
    static triggers = { simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000 }
    def group = "MyGroup"

    def execute(){
    println "Running Job!"
  }
}
4

3 に答える 3

1

「new Date()」を println に追加したところ、動作するようになりました!

class MyJob {
    static triggers = { simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000 , repeatCount:-1}
    def group = "MyGroup"

    def execute(){
    println "Running Job!"+new Date()
  }
}

クォーツは何らかの最適化を行っているように思えますが、ジョブの状態が一定の場合、一度実行されます!

于 2012-08-16T21:06:42.573 に答える
0

ジョブを複数回実行する場合は、単純なトリガー定義でrepeatCountを指定します。

repeatCount —トリガーはジョブ実行(1 + repeatCount)回起動し、その後停止します(ここで、ワンショットジョブの場合は0を指定し、ジョブ実行を無期限に繰り返す場合は-1を指定します)

于 2012-08-15T20:20:32.237 に答える
0

ジョブがいつ実行されるかを設定するために、トリガー内にcronを定義できます。

static triggers = {
    cron name: 'mySimpleCron', cronExpression: "0 30 15 * * ?"
}

これにより、毎日 15:30:00 にジョブが実行されます。

別の例:

1. 毎日、午後 2 時から午後 2 時 5 分まで毎分発射します。

cronExpression: "0 0-5 14 * * ?"

2. 毎週月曜日、火曜日、水曜日、木曜日、金曜日の午前 10 時 15 分に起動:

cronExpression: "0 15 10 ? * MON-FRI"

7 項式の構文は次のとおりです。

* * * * * * *
| | | | | | |_ Year [optional]
| | | | | |_ Day of Week, 1-7 or SUN-SAT, ?
| | | | |_ Month, 1-12 or JAN-DEC
| | | |_ Day of Month, 1-31, ?
| | |_ Hour [0-23]
| |_ Minute [0-59] 
|_ Second [0-59]

この方法でジョブの実行動作を定義する方が簡単で、コード全体ではなく式を変更するだけで構成できるオプションが増えます。

これらのリンクの詳細情報:

CronTrigger チュートリアル

Grails 用 Quartz プラグイン - リファレンス ドキュメント

于 2014-05-30T15:21:29.247 に答える