mirror of
https://github.com/HDT3213/delayqueue.git
synced 2025-09-27 11:32:06 +08:00
45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
package delayqueue
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/redis/go-redis/v9"
|
|
)
|
|
|
|
// Publisher only publishes messages to delayqueue, it is a encapsulation of delayqueue
|
|
type Publisher struct {
|
|
inner *DelayQueue
|
|
}
|
|
|
|
// NewPublisher0 creates a new Publisher by a RedisCli instance
|
|
func NewPublisher0(name string, cli RedisCli, opts ...interface{}) *Publisher {
|
|
return &Publisher{
|
|
inner: NewQueue0(name, cli, opts...),
|
|
}
|
|
}
|
|
|
|
// NewPublisher creates a new Publisher by a *redis.Client
|
|
func NewPublisher(name string, cli *redis.Client, opts ...interface{}) *Publisher {
|
|
rc := &redisV9Wrapper{
|
|
inner: cli,
|
|
}
|
|
return NewPublisher0(name, rc, opts...)
|
|
}
|
|
|
|
// WithLogger customizes logger for queue
|
|
func (p *Publisher) WithLogger(logger *log.Logger) *Publisher {
|
|
p.inner.logger = logger
|
|
return p
|
|
}
|
|
|
|
// SendScheduleMsg submits a message delivered at given time
|
|
func (p *Publisher) SendScheduleMsg(payload string, t time.Time, opts ...interface{}) error {
|
|
return p.inner.SendScheduleMsg(payload, t, opts...)
|
|
}
|
|
|
|
// SendDelayMsg submits a message delivered after given duration
|
|
func (p *Publisher) SendDelayMsg(payload string, duration time.Duration, opts ...interface{}) error {
|
|
return p.inner.SendDelayMsg(payload, duration, opts...)
|
|
}
|