私は grailsを学習しています。アプリの実行中に5秒ごとに発生する定期的なタスクを含めると、自分のドメインオブジェクトなどにアクセスする必要があります。 Grailsでこれを達成する適切な方法は何ですか?定期的なタスクをGrailsアプリケーションに配置する場所
私はTimerをBootStrap.groovy
に開始すると考えましたが、それは処分されてタイマーを殺すでしょう。
私は grailsを学習しています。アプリの実行中に5秒ごとに発生する定期的なタスクを含めると、自分のドメインオブジェクトなどにアクセスする必要があります。 Grailsでこれを達成する適切な方法は何ですか?定期的なタスクをGrailsアプリケーションに配置する場所
私はTimerをBootStrap.groovy
に開始すると考えましたが、それは処分されてタイマーを殺すでしょう。
私はそれを一度も使用していませんが、Grails Quartz pluginはあなたが望むことをさせるべきです。
クォーツ(http://grails.org/plugin/quartz)では、CRONタスクが単一のサーバー上で実行されるのと同じ方法で繰り返しタスクを定義できます。あなたはこのようなあなたのプロジェクトでそれをインストールすることができます
:それがインストールされています一度
grails install-plugin quartz
、あなたが新しいジョブを作成することができます。
:grails create-job
次に、あなたがそうのようにそれをスケジュールすることができます
class MyJob {
static triggers = {
simple name: 'mySimpleTrigger', startDelay: 60000, repeatInterval: 1000
}
def group = "MyGroup"
def execute(){
print "Job run!"
}
}
CRON形式を使用する場合は、同様の形式でトリガーをスケジュールできます。Grailsのアプリが複数のサーバーに展開することができので、
static triggers = {
cron name: 'myTrigger', cronExpression: "0 0 6 * * ?"
}
はしかし、石英プラグインは関係なく、それが展開されていますどのサーバの実行特定のプロセスをすることができます(QAは、ステージング、...、ロードバランサを展開します)。
注目すべき点は、サーバークロックが同期されていることです。そうしないと、いくつかの奇妙な機能(特に複数のサーバーが同じデータベースを共有する場合)が発生する可能性があります。
よろしくお願いいたします。 –
クォーツプラグインは正しい方法です。人生をはるかに簡単にします。 – JeffSea
私はそれを使用しています、それはあなたが必要な適切なツールです。 –