github.com/aaabigfish/gopkg@v1.1.0/mq/asynq/README.md (about) 1 # asynq 2 3 队列库,基于 [asynq](github.com/hibiken/asynq) 封装, 依赖gitlab.ipcloud.cc/go/gopkg/config 默认配置在项目conf/config.toml,配置模版如下: 4 ``` 5 [asynq] 6 # redis地址,格式(host:port) 7 Addr = "192.168.1.157:6379" 8 # redis用户名 9 UserName = "" 10 # redis密码 11 PassWord = "" 12 # redis的DB 13 DB = 3 14 ``` 15 16 17 # 生产者示例 18 ```go 19 import "gitlab.ipcloud.cc/go/gopkg/mq/asynq" 20 21 // 创建写入实例,可以指定写入的redis队列的key,这里以order_list为例,(注意key值必须全局唯一,以免出现出现消费错乱问题) 22 mq := asynq.NewWriter("order_list") 23 24 // 如果初始化队列,已经初始化了写入队列的key,可以使用Push方法,不需要指定key值 25 mq.Push(order) 26 27 // 指定写入某个队列,这里指定写入list_key队列 28 mq.Send("list_key", "test") 29 30 ``` 31 32 33 # 消费者示例 34 ```go 35 import "gitlab.ipcloud.cc/go/gopkg/mq/asynq" 36 37 // 创建消费实例,可以传入asynq.Config的精细配置队列 38 mq := asynq.NewReader() 39 40 // 增加处理函数(注意key不能重复,重复会导致函数覆盖) 41 mq.AddHook("key", func(ctx context.Context, m*asynq.Message) error { 42 log.PP(string(m.Payload())) 43 return nil 44 }) 45 46 // 批量增加处理函数 47 mq.AddHooks(Handler{ 48 "key1":handlerFunc1, 49 "key2":handlerFunc2, 50 }) 51 52 // 启动消费服务 53 mq.Run() 54 55 ```