revelのJobs #golangjp

jobsを使ってみる

http://robfig.github.io/revel/manual/jobs.html

jobはModulesの一種。 revelフレームワークに機能を追加したりするよ。

設定

app/conf/app.confに以下を追加
module.jobs = github.com/robfig/revel/modules/jobs

job監視をするページを見たい場合はapp/conf/routesに以下を記述
module:jobs

使い方

ひとまずinit.goに定期実行するfuncを記述。
以下のコードは一分毎に「1minute」と出力するサンプル。

func init() {

    revel.OnAppStart(func() {
        fmt.Println("onAppStart")
        jobs.Schedule("0 * * * * *", jobs.Func(func() { fmt.Println("1minute") }))
    })
}
例1:functionを指定する。

revel.OnAppStart(func() {})でサーバ起動前にfunc実行
jobs.Schedule("0 * * * * *", jobs.Func(func() { fmt.Println("1minute") }))
時間の設定はcronと同様。

例2:Run() {}を実装した構造体を指定する。

src/github.com/robfig/revel/samples/booking/app/jobs/count.go
を見るとわかりやすい。init*1にOnAppStartを実行してstructを登録している。
登録するstructはrun()を実装している。

*1:main.goにてimportされるのでinitも動く仕組み。