goworker (Go-based background worker)
Table of Contents
1. Goworker 简介
2. Goworker 实例
下面是一个简单的例子:
package main
import (
"fmt"
"github.com/benmanns/goworker"
)
func init() {
goworker.Register("Hello", helloWorker)
// ^
// |
// 如果队列中数据的class为Hello,则调用helloWorker函数
}
func helloWorker(queue string, args ...interface{}) error {
fmt.Printf("Hello, world! From queue %s, %v\n", queue, args)
return nil
}
func main() {
if err := goworker.Work(); err != nil {
fmt.Println("Error:", err)
}
}
测试过程如下。
第一步、启动 redis 服务器。
第二步、编译运行上面程序:
$ go build -o goworker_example goworker_example.go $ ./goworker_example -queues=hello # 会一直等待,不会退出
第三步、打开另一终端,使用 redis-cli 往 redis 中插入两条相同数据,指定 class 为"Hello"
$ redis-cli -r 2 RPUSH resque:queue:hello '{"class":"Hello","args":["hi","there"]}'
可以看到在运行程序 goworker_example 所在终端中会显示下面输出:
Hello, world! From queue hello, [hi there] Hello, world! From queue hello, [hi there]