2
0
mirror of https://github.com/hibiken/asynq.git synced 2025-10-23 22:26:13 +08:00
Herb Stahl
2022-09-01 14:13:39 -07:00
parent c70ff6a335
commit a718697b1f
10 changed files with 191 additions and 59 deletions

View File

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