2011-02-09 14 views
4

私は grailsを学習しています。アプリの実行中に5秒ごとに発生する定期的なタスクを含めると、自分のドメインオブジェクトなどにアクセスする必要があります。 Grailsでこれを達成する適切な方法は何ですか?定期的なタスクをGrailsアプリケーションに配置する場所

私はTimerBootStrap.groovyに開始すると考えましたが、それは処分されてタイマーを殺すでしょう。

答えて

9

私はそれを一度も使用していませんが、Grails Quartz pluginはあなたが望むことをさせるべきです。

+0

よろしくお願いいたします。 –

+1

クォーツプラグインは正しい方法です。人生をはるかに簡単にします。 – JeffSea

+0

私はそれを使用しています、それはあなたが必要な適切なツールです。 –

2

クォーツ(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は、ステージング、...、ロードバランサを展開します)。

注目すべき点は、サーバークロックが同期されていることです。そうしないと、いくつかの奇妙な機能(特に複数のサーバーが同じデータベースを共有する場合)が発生する可能性があります。

関連する問題