added the example for worker

This commit is contained in:
mikespook 2011-05-18 20:24:59 +08:00
parent 50411ee1a9
commit a6fab88b22
2 changed files with 63 additions and 0 deletions

18
example/Makefile Normal file
View File

@ -0,0 +1,18 @@
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
include $(GOROOT)/src/Make.inc
TARG=gearman
# GOFILES=\
# worker.go\
CLEANFILES+= worker
include $(GOROOT)/src/Make.pkg
%: %.go
$(GC) $*.go
$(LD) -o $@ $*.$O

45
example/worker.go Normal file
View File

@ -0,0 +1,45 @@
package main
import (
"gearman"
"fmt"
"log"
"os"
"strings"
)
func ToUpper(job *gearman.Job) ([]byte, os.Error) {
data := []byte(strings.ToUpper(string(job.Data)))
return data, nil
}
func main() {
worker := gearman.NewWorker()
worker.AddServer("127.0.0.1:4730")
worker.AddFunction("ToUpper", ToUpper, 0)
worker.AddFunction("ToUpperTimeOut5", ToUpper, 5)
go func() {
log.Println("start worker")
for {
print("cmd: ")
var str string
fmt.Scan(&str)
switch str {
case "echo":
worker.Echo([]byte("Hello world!"))
job := <-worker.Queue
log.Println(string(job.Data))
case "quit":
worker.Close()
return
case "result":
job := <-worker.Queue
log.Println(string(job.Data))
default:
log.Println("Unknown command")
}
}
}()
worker.Work()
}