本文整理匯總了Golang中github.com/nutrun/lentil.Beanstalkd類的典型用法代碼示例。如果您正苦於以下問題:Golang Beanstalkd類的具體用法?Golang Beanstalkd怎麽用?Golang Beanstalkd使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Beanstalkd類的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: put
func put(t *testing.T, jobName, tube string, delay int, q *lentil.Beanstalkd) {
job := make(map[string]string)
job["tube"] = tube
job["name"] = jobName
jobjson, _ := json.Marshal(job)
e := q.Use(tube)
if e != nil {
t.Fatal(e)
}
_, e = q.Put(0, delay, 60, jobjson)
if e != nil {
t.Error(e)
}
}
示例2: queryTubes
func queryTubes(q *lentil.Beanstalkd) (map[string]*Tube, error) {
tubes := make(map[string]*Tube)
names, e := q.ListTubes()
if e != nil {
return nil, e
}
for _, tube := range names {
if tube == "default" {
continue
}
tubestats, e := q.StatsTube(tube)
if e != nil {
continue
}
ready, _ := strconv.Atoi(tubestats["current-jobs-ready"])
reserved, _ := strconv.Atoi(tubestats["current-jobs-reserved"])
delayed, _ := strconv.Atoi(tubestats["current-jobs-delayed"])
pause, _ := strconv.Atoi(tubestats["pause"])
tubes[tube] = NewTube(tube, uint(reserved), uint(ready), uint(delayed), uint(pause))
}
return tubes, nil
}
示例3: Run
// Run is the block's main loop. Here we listen on the different channels we set up.
func (b *ToBeanstalkd) Run() {
var conn *lentil.Beanstalkd
var tube = "default"
var ttr = 0
var host = ""
var err error
for {
select {
case msgI := <-b.inrule:
// set hostname for beanstalkd server
host, err = util.ParseString(msgI, "Host")
if err != nil {
b.Error(err.Error())
continue
}
// set tube name
tube, err = util.ParseString(msgI, "Tube")
if err != nil {
b.Error(errors.New("Could not parse tube name, setting to 'default'"))
tube = "default"
}
// set time to reserve
ttr, err = util.ParseInt(msgI, "TTR")
if err != nil || ttr < 0 {
b.Error(errors.New("Error parsing TTR. Setting TTR to 0"))
ttr = 0
}
// create beanstalkd connection
conn, err = lentil.Dial(host)
if err != nil {
// swallowing a panic from lentil here - streamtools must not die
b.Error(errors.New("Could not initiate connection with beanstalkd server"))
continue
}
// use the specified tube
conn.Use(tube)
case <-b.quit:
// close connection to beanstalkd and quit
if conn != nil {
conn.Quit()
}
return
case msg := <-b.in:
// deal with inbound data
msgStr, err := json.Marshal(msg)
if err != nil {
b.Error(err)
continue
}
if conn != nil {
_, err := conn.Put(0, 0, ttr, msgStr)
if err != nil {
b.Error(err.Error())
}
} else {
b.Error(errors.New("Beanstalkd connection not initated or lost. Please check your beanstalkd server or block settings."))
}
case respChan := <-b.queryrule:
// deal with a query request
respChan <- map[string]interface{}{
"Host": host,
"Tube": tube,
"TTR": ttr,
}
}
}
}
示例4: ToBeanstalkd
func ToBeanstalkd(b *Block) {
type toBeanstalkdRule struct {
Host string
Tube string
TTR int
}
var conn *lentil.Beanstalkd
var e error
var tube = "default"
var ttr = 0
var rule *toBeanstalkdRule
for {
select {
case m := <-b.Routes["set_rule"]:
if rule == nil {
rule = &toBeanstalkdRule{}
}
unmarshal(m, rule)
conn, e = lentil.Dial(rule.Host)
if e != nil {
log.Println(e.Error())
} else {
if len(rule.Tube) > 0 {
tube = rule.Tube
}
if rule.TTR > 0 {
ttr = rule.TTR
}
conn.Use(tube)
log.Println("initialized connection using tube:", tube)
}
case r := <-b.Routes["get_rule"]:
if rule == nil {
marshal(r, &toBeanstalkdRule{})
} else {
marshal(r, rule)
}
case msg := <-b.InChan:
if rule == nil {
break
}
msgStr, err := json.Marshal(msg.Msg)
if err != nil {
log.Println("wow bad json")
break
}
if conn == nil {
log.Panic("Connection to beanstalkd was dropped. Something is not right.")
break
}
jobId, err := conn.Put(0, 0, ttr, msgStr)
if err != nil {
log.Println(err.Error())
} else {
log.Println("put job on queue: Job Id:", jobId)
}
case msg := <-b.AddChan:
updateOutChans(msg, b)
case <-b.QuitChan:
quit(b)
return
}
}
}