本文整理匯總了Golang中github.com/hoisie/redis.Client.Blpop方法的典型用法代碼示例。如果您正苦於以下問題:Golang Client.Blpop方法的具體用法?Golang Client.Blpop怎麽用?Golang Client.Blpop使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/hoisie/redis.Client
的用法示例。
在下文中一共展示了Client.Blpop方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Poll
/*
* Poll the worker's job queue
* jobHandlers - a reference to the clients map of available job handlers
*/
func (this Worker) Poll(jobHandlers map[string]reflect.Type) {
for {
// Pop a job off the queue
var client redis.Client
_, message, err := client.Blpop([]string{this.Queue}, 1)
if err != nil {
fmt.Println(fmt.Sprintf("ERROR: %s\n", err))
} else if len(message) > 0 {
// Basic debugging information
// fmt.Println(this.Name + ": Yay Work Work Work!")
// fmt.Println(string(message))
// Parse the message
name, params, err := this.parseMessage(message)
if err != nil {
fmt.Println(fmt.Sprintf("ERROR: %s\n", err))
} else {
// Construct the handler and call the execute() function
jobHandler := reflect.New(jobHandlers[name])
executeMethod := jobHandler.MethodByName("Execute")
if executeMethod.IsValid() {
executeMethod.Call([]reflect.Value{0: reflect.ValueOf(params)})
} else {
fmt.Println(fmt.Sprintf("ERROR: Invalid job handler"))
}
}
} else {
// fmt.Println(this.Name + ": Nothing to do :(\n")
}
// Sleep for 2 seconds before polling the queue again
time.Sleep(2 * time.Second)
}
}