Skip to content

Commit 5b6137e

Browse files
committed
chore: Add queue message in Redis
Signed-off-by: Bo-Yi Wu <[email protected]>
1 parent 17193e1 commit 5b6137e

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

redis.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type Option func(*Worker)
2020
type Worker struct {
2121
// redis config
2222
rdb *redis.Client
23+
pubsub *redis.Pubsub
2324
addr string
2425
db int
2526
connectionString string
@@ -95,10 +96,11 @@ func WithLogger(l queue.Logger) Option {
9596
func NewWorker(opts ...Option) *Worker {
9697
var err error
9798
w := &Worker{
98-
addr: "127.0.0.1:6379",
99-
channel: "queue",
100-
stop: make(chan struct{}),
101-
logger: queue.NewLogger(),
99+
addr: "127.0.0.1:6379",
100+
channel: "queue",
101+
channelSize: 1024,
102+
stop: make(chan struct{}),
103+
logger: queue.NewLogger(),
102104
runFunc: func(context.Context, queue.QueuedMessage) error {
103105
return nil
104106
},
@@ -134,6 +136,9 @@ func NewWorker(opts ...Option) *Worker {
134136

135137
w.rdb = rdb
136138

139+
ctx := context.Background()
140+
w.pubsub = w.rdb.Subscribe(ctx, w.channel)
141+
137142
return w
138143
}
139144

@@ -199,6 +204,7 @@ func (s *Worker) Shutdown() error {
199204
}
200205

201206
s.stopOnce.Do(func() {
207+
s.pubsub.Close()
202208
s.rdb.Close()
203209
close(s.stop)
204210
})
@@ -221,6 +227,20 @@ func (s *Worker) Queue(job queue.QueuedMessage) error {
221227
return queue.ErrQueueShutdown
222228
}
223229

230+
ctx := context.Background()
231+
232+
// Wait for confirmation that subscription is created before publishing anything.
233+
_, err := s.pubsub.Receive(ctx)
234+
if err != nil {
235+
return err
236+
}
237+
238+
// Publish a message.
239+
err = s.rdb.Publish(ctx, s.channel, job).Err()
240+
if err != nil {
241+
return err
242+
}
243+
224244
return nil
225245
}
226246

0 commit comments

Comments
 (0)