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]