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  ```