golib/gqueue/queue.go

75 lines
1.1 KiB
Go
Raw Normal View History

2023-06-15 21:22:51 +08:00
//
// 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
2023-08-16 07:27:28 +08:00
func GetClient() *asynq.Client {
2023-06-15 21:22:51 +08:00
onceCli.Do(func() {
cli = asynq.NewClient(redisOpt)
})
return cli
}
var svc *asynq.Server
2023-08-16 07:27:28 +08:00
func GetServerWithArgs(concurrency int, fn asynq.ErrorHandlerFunc) *asynq.Server {
2023-07-05 18:57:31 +08:00
onceSvc.Do(func() {
svc = asynq.NewServer(
redisOpt,
asynq.Config{
Concurrency: concurrency,
ErrorHandler: fn,
},
)
})
return svc
}
2023-08-16 07:27:28 +08:00
func GetServerWithConfig(cfg asynq.Config) *asynq.Server {
2023-07-05 18:57:31 +08:00
onceSvc.Do(func() {
svc = asynq.NewServer(
redisOpt,
cfg,
)
})
return svc
}
2023-08-16 07:27:28 +08:00
func GetServer() *asynq.Server {
2023-06-15 21:22:51 +08:00
onceSvc.Do(func() {
svc = asynq.NewServer(
redisOpt,
2023-07-05 18:57:31 +08:00
asynq.Config{
Concurrency: 0,
},
2023-06-15 21:22:51 +08:00
)
})
return svc
}