1

私たちのアプリケーションは、負荷分散と冗長性のために 2 つの Web サーバーにデプロイされています。毎日 1 回実行される Quartz ジョブがいくつかあります。ジョブは、両方ではなく、一方の Web サーバーでのみ実行する必要があります。最終的には、これらのジョブをジョブ サーバーに移動する可能性がありますが、今のところ、ジョブがサーバーの 1 つだけで実行されるように構成または環境変数を介して実行できる方法はありますか?

4

1 に答える 1

1

ではQuartzConfig.groovy、特定の環境に対して Quartz プラグインを有効または無効にすることができます。

environments {
    runQuartz {
        autoStartup = true
    }
    dontRunQuartz {
        autoStartup = false
    }
}

1 つの方法は、Tomcat の起動パラメータで-Dgrails.env=runQuartzandを使用することです。-Dgrails.env=dontRunQuartz

恐ろしいハックは、Quartz ジョブが共有データベース テーブルをロックしようとすることです。ロックを取得したジョブは実行できますが、そうでない場合は中止されます。

3 つ目のオプションは、JDBC ジョブ ストアを使用することだと思いますが、使用した経験はありません。Quartz プラグインのドキュメント で簡単に説明されています。

于 2012-11-19T20:26:03.370 に答える