记录一下

package redis

import (
"bytes"
"encoding/json"
"errors"
)

type Job struct {
JobId string `json:"job_id"`
Uid uint64 `json:"uid"`
Action string `json:"action"` //
Input string `json:"input"` //json
CreateTime int64 `json:"create_time"` //时间戳-毫秒
Retry int `json:"retry"` //重试次数
ErrCode int `json:"err_code"` //错误code
Message string `json:"message"` //错误信息
}

//入
func PushQueue(aliasName string, dbNode int, jobKey string, jobs []*Job) error {
if len(jobs) == 0 {
return errors.New("no jobs")
}
if jobKey == "" {
return errors.New("no job key")
}
pool, err := GetConnPool(aliasName, dbNode, true)
if err != nil {
return err
}
conn := pool.Get()
defer conn.Close()

for _, v := range jobs {
b, err := json.Marshal(v)
if err != nil {
return err
}
//入队列
_, err = conn.Do("rpush", jobKey, b)
if err != nil {
return err
}
}

return nil
}

//取
func PopQueue(aliasName string, dbNode int, jobKey string) (*Job, error) {
pool, err := GetConnPool(aliasName, dbNode, true)
if err != nil {
return nil, err
}
conn := pool.Get()
defer conn.Close()
reply, err := conn.Do("LPOP", jobKey)
if err != nil {
return nil, err
}

if reply != nil {
var j *Job
decoder := json.NewDecoder(bytes.NewReader(reply.([]byte)))
if err := decoder.Decode(&j); err != nil {
return nil, err
}

return j, nil
}
return nil, nil

}


原文地址:http://www.cnblogs.com/already/p/16888828.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性