go-workersを試してみた
こんにちは。家でジンギスカンをつくりました、きたけーです。
Go製のジョブキューライブラリを試してみたくなったので、jrallison/go-workers · GitHub をつかってみました。Sidekiq互換だそうです。
ワーカーの定義と起動
package main import "fmt" import "github.com/jrallison/go-workers" func myJob(message *workers.Msg) { args := message.Args() // argsは go-simplejson をラップしたやつらしいので http://godoc.org/github.com/bitly/go-simplejson を参照する a := args.GetIndex(0).MustInt() b := args.GetIndex(1).MustInt() fmt.Println(a + b) } func main() { workers.Configure(map[string]string{ "server": "localhost:6379", "database": "0", "pool": "30", "process": "1", }) workers.Process("myqueue", myJob, 10) // 10 は並行数 workers.Run() }
ちなみに
workers.Process("myqueue", myJob, 10) workers.Process("myqueue", myJob2, 10)
のように、同じ名前(myqueue)で設定すると、最後に登録した関数が実行されます。
ジョブを投げる
Sidekiq互換だからかもしれないけど、classの指定っているかなぁ...
workers.Enqueue("myqueue", "Add", []int{1, 2})