Skip to content

Commit 6755173

Browse files
committed
fix: improve error handling and logging in consumer initialization
- Improve error handling in startConsumer by capturing and returning initialization errors - Enhance logging with more descriptive error messages for QueueDeclare, QueueBind, and Consume failures - Ensure Request returns an error if startConsumer fails Signed-off-by: Bo-Yi Wu <[email protected]>
1 parent 72c6600 commit 6755173

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

rabbitmq.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ func NewWorker(opts ...Option) *Worker {
6262
return w
6363
}
6464

65-
func (w *Worker) startConsumer() error { //nolint:unparam
65+
func (w *Worker) startConsumer() error {
66+
var initErr error
6667
w.startOnce.Do(func() {
6768
q, err := w.channel.QueueDeclare(
6869
w.opts.queue, // name
@@ -73,12 +74,14 @@ func (w *Worker) startConsumer() error { //nolint:unparam
7374
nil, // arguments
7475
)
7576
if err != nil {
76-
w.opts.logger.Error(err)
77+
initErr = err
78+
w.opts.logger.Error("QueueDeclare failed: ", err)
7779
return
7880
}
7981

8082
if err := w.channel.QueueBind(q.Name, w.opts.routingKey, w.opts.exchangeName, false, nil); err != nil {
81-
w.opts.logger.Error("cannot consume without a binding to exchange: ", err)
83+
initErr = err
84+
w.opts.logger.Error("QueueBind failed: ", err)
8285
return
8386
}
8487

@@ -92,11 +95,13 @@ func (w *Worker) startConsumer() error { //nolint:unparam
9295
nil, // args
9396
)
9497
if err != nil {
95-
w.opts.logger.Error("cannot consume from: ", q.Name, err)
98+
initErr = err
99+
w.opts.logger.Error("Consume failed: ", err)
100+
return
96101
}
97102
})
98103

99-
return nil
104+
return initErr
100105
}
101106

102107
// Run start the worker
@@ -149,7 +154,9 @@ func (w *Worker) Queue(job core.TaskMessage) error {
149154

150155
// Request a new task
151156
func (w *Worker) Request() (core.TaskMessage, error) {
152-
_ = w.startConsumer()
157+
if err := w.startConsumer(); err != nil {
158+
return nil, err
159+
}
153160
clock := 0
154161
loop:
155162
for {

0 commit comments

Comments
 (0)