This is the lentil library. For the the command line client see github.com/nutrun/lentil/tree/master/lentil
go get github.com/nutrun/lentilOr, in $GOPATH/src:
git clone git://github.com/nutrun/lentil.git && cd lentil && go installAfter installing, use godoc to view documentation. For example:
godoc -http=:6060And open http://0.0.0.0:6060/pkg/github.com/nutrun/lentil/ in a browser.
package main
import(
"github.com/nutrun/lentil"
"log"
)
func main() {
conn, e := lentil.Dial("0.0.0.0:11300")
if e != nil {
log.Fatal(e)
}
jobId, e := conn.Put(0, 0, 60, []byte("hello"))
if e != nil {
log.Fatal(e)
}
log.Printf("JOB ID: %d\n", jobId)
}By default, Dial and any functions called on the connection will not retry. You can specify a retry period for both the Dial and other calls using arguments to the Dial() call.
For instace, to retry the dial for 10 minutes and retry any call (Put, Delete, Reserve) for 1 minute before returning an error, use:
func main() {
conn, e := lentil.Dial("0.0.0.0:11300", "10m", "1m")
if e != nil {
log.Fatal(e)
}
jobId, e := conn.Put(0, 0, 60, []byte("hello"))
if e != nil {
log.Fatal(e)
}
log.Printf("JOB ID: %d\n", jobId)
}
Both Dial and Put() will retry every second for the given duration.
package main
import(
"github.com/nutrun/lentil"
"log"
)
func main() {
conn, e := lentil.Dial("0.0.0.0:11300")
if e != nil {
log.Fatal(e)
}
job, e := conn.Reserve()
if e != nil {
log.Fatal(e)
}
log.Printf("JOB ID: %d, JOB BODY: %s", job.Id, job.Body)
e = conn.Delete(job.Id)
if e != nil {
log.Fatal(e)
}
}- beanstalkd: http://kr.github.com/beanstalkd/
- beanstalkd source: https://github.com/kr/beanstalkd/
- beanstalkd protocol: https://github.com/kr/beanstalkd/blob/master/doc/protocol.txt
- kr's go beanstalk client: https://github.com/kr/beanstalk
See LICENSE, it's the same as beanstalkd's license