2009-07-07 8 views
4

GrailsでWebアプリケーションを作成しています.GETを使用してRESTサービスをポーリングし続けます(または5分ごとに)依存していれば、私のアプリケーションは取得したデータをオブジェクトとして保存し、それをデータベースに保存する必要があります。問題は、どのように実装するべきかわからないことです(Quartzを使用したcronジョブで)?GrailsでRESTサービスを継続的にポーリングします。

答えて

5

クォーツを使用したcronジョブは実装が簡単です。クォーツプラグインは使い方が簡単です(インストールしてから "grails create-job Foo"を実行するだけです)。タスク内では、ジョブをスケジュールに基づいて実行させるcron式(または他の多くの方法)を使用できます。

いくつかの項目によっては、GET式も非常に書きやすいです。あなたはそれが同じように簡単かもしれないヒットしようとしているサービスによって:クォーツプラグインを使用して

def result = new URL("http://google.com").text 
// parse result depending on what it is 
4

とそれのうちcronジョブを作成することは、あなたが必要としている場合は特に、おそらく前方に最善の方法です他のポーラー。

一度オフにその知っている、とあなたは(いくつかの奇妙な理由で)石英で引っ張っていけない場合は、あなたはまだタイマータスクを使用して、独自のポーラーをロールバック、あるいはグルーヴィーな糸を使用することができます。

Thread.start { 
    while (keepGoing) { 
     def result = new URL("http://google.com").text 
     // parse result depending on what it is 
     //perhaps def model = new YourDomainModel(result).save() 
     keepGoing = model.shouldContinue //calculate whether to keep going based on the result, or some other method call/logic 
     Thread.sleep(5*60*1000) //min*seconds_per_min*milliseconds_per_second 
    } 
} 

これは、bootStrap中にこれを呼び出すことも、サービスクラスを作成してコンストラクタ内で上記を呼び出すこともできますし、スレッドを停止するメソッドを持つこともできます(ただし、この段階になると、 )。

関連する問題