golib/gqueue/queue.go
2023-06-15 21:22:51 +08:00

50 lines
737 B
Go

//
// queue.go
// Copyright (C) 2022 tiglog <me@tiglog.com>
//
// Distributed under terms of the MIT license.
//
package gqueue
import (
"sync"
"github.com/hibiken/asynq"
)
var onceCli sync.Once
var onceSvc sync.Once
var redisOpt asynq.RedisClientOpt
func Init(addr, username, password string, database int) {
redisOpt = asynq.RedisClientOpt{
Addr: addr,
Username: username,
Password: password,
DB: database,
}
}
var cli *asynq.Client
func Client() *asynq.Client {
onceCli.Do(func() {
cli = asynq.NewClient(redisOpt)
})
return cli
}
var svc *asynq.Server
func Server() *asynq.Server {
onceSvc.Do(func() {
svc = asynq.NewServer(
redisOpt,
asynq.Config{Concurrency: 10},
)
})
return svc
}