This module is a Gearman API for the Go Programming Language. The protocols were written in pure Go. It contains two sub-packages:
The client package is used for sending jobs to the Gearman job server, and getting responses from the server.
"github.com/mikespook/gearman-go/client"
The worker package will help developers in developing Gearman worker service easily.
"github.com/mikespook/gearman-go/worker"
Install the client package:
$ go get github.com/mikespook/gearman-go/client
Install the worker package:
$ go get github.com/mikespook/gearman-go/worker
Both of them:
$ go get github.com/mikespook/gearman-go
// Limit number of concurrent jobs execution.
// Use worker.Unlimited (0) if you want no limitation.
w := worker.New(worker.OneByOne)
w.ErrHandler = func(e error) {
log.Println(e)
}
w.AddServer("127.0.0.1:4730")
// Use worker.Unlimited (0) if you want no timeout
w.AddFunc("ToUpper", ToUpper, worker.Unlimited)
// This will give a timeout of 5 seconds
w.AddFunc("ToUpperTimeOut5", ToUpper, 5)
if err := w.Ready(); err != nil {
log.Fatal(err)
return
}
go w.Work()
// ...
c, err := client.New("tcp4", "127.0.0.1:4730")
// ... error handling
defer c.Close()
c.ErrorHandler = func(e error) {
log.Println(e)
}
echo := []byte("Hello\x00 world")
echomsg, err := c.Echo(echo)
// ... error handling
log.Println(string(echomsg))
jobHandler := func(resp *client.Response) {
log.Printf("%s", resp.Data)
}
handle, err := c.Do("ToUpper", echo, client.JobNormal, jobHandler)
// ...
Version 0.x means: It is far far away from stable.
Use at your own risk!
- master current usable version
- 0.2-dev Refactoring a lot of things
- 0.1-testing Old API and some known issues, eg. issue-14
Great thanks to all of you for your support and interest!
(Alphabetic order)
- Alex Zylman
- C.R. Kirkwood-Watts
- Damian Gryski
- Gabriel Cristian Alecu
- Graham Barr
- Ingo Oeser
- jake
- Joe Higton
- Jonathan Wills
- Kevin Darlington
- miraclesu
- Paul Mach
- Randall McPherson
- Sam Grimee
See LICENSE.