mirror of
https://github.com/hibiken/asynq.git
synced 2025-10-23 22:26:13 +08:00
This commit is contained in:
39
client.go
39
client.go
@@ -26,14 +26,47 @@ import (
|
||||
type Client struct {
|
||||
broker base.Broker
|
||||
}
|
||||
type ClientConfig struct {
|
||||
MaxArchiveSize *int
|
||||
ArchivedExpirationInDays *int
|
||||
}
|
||||
|
||||
func validateClientConfig(cfg *ClientConfig) {
|
||||
if cfg.MaxArchiveSize == nil {
|
||||
value := base.DefaultMaxArchiveSize
|
||||
cfg.MaxArchiveSize = &value
|
||||
}
|
||||
if *(cfg.MaxArchiveSize) < 0 {
|
||||
value := 1
|
||||
cfg.MaxArchiveSize = &value
|
||||
}
|
||||
if cfg.ArchivedExpirationInDays == nil {
|
||||
value := base.DefaultArchivedExpirationInDays
|
||||
cfg.ArchivedExpirationInDays = &value
|
||||
}
|
||||
if *(cfg.ArchivedExpirationInDays) < 0 {
|
||||
value := 1
|
||||
cfg.ArchivedExpirationInDays = &value
|
||||
}
|
||||
}
|
||||
|
||||
// NewClientWithConfig returns a new Client instance given a redis connection option.
|
||||
func NewClientWithConfig(r RedisConnOpt, cfg ClientConfig) *Client {
|
||||
validateClientConfig(&cfg)
|
||||
|
||||
// NewClient returns a new Client instance given a redis connection option.
|
||||
func NewClient(r RedisConnOpt) *Client {
|
||||
c, ok := r.MakeRedisClient().(redis.UniversalClient)
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("asynq: unsupported RedisConnOpt type %T", r))
|
||||
}
|
||||
return &Client{broker: rdb.NewRDB(c)}
|
||||
return &Client{broker: rdb.NewRDBWithConfig(c, rdb.RDBConfig{
|
||||
MaxArchiveSize: cfg.MaxArchiveSize,
|
||||
ArchivedExpirationInDays: cfg.ArchivedExpirationInDays,
|
||||
})}
|
||||
}
|
||||
|
||||
// NewClient returns a new Client instance given a redis connection option.
|
||||
func NewClient(r RedisConnOpt) *Client {
|
||||
return NewClientWithConfig(r, ClientConfig{})
|
||||
}
|
||||
|
||||
type OptionType int
|
||||
|
Reference in New Issue
Block a user