@@ -77,13 +77,13 @@ func (w *Worker) startConsumer() (err error) {
77
77
}
78
78
79
79
w .tasks , err = w .channel .Consume (
80
- q .Name , // queue
81
- w .opts .tag , // consumer
82
- false , // auto-ack
83
- false , // exclusive
84
- false , // no-local
85
- false , // no-wait
86
- nil , // args
80
+ q .Name , // queue
81
+ w .opts .tag , // consumer
82
+ w . opts . autoAck , // auto-ack
83
+ false , // exclusive
84
+ false , // no-local
85
+ false , // no-wait
86
+ nil , // args
87
87
)
88
88
89
89
if err != nil {
@@ -153,21 +153,22 @@ func (w *Worker) Run(task core.QueuedMessage) error {
153
153
}
154
154
155
155
// Shutdown worker
156
- func (w * Worker ) Shutdown () error {
156
+ func (w * Worker ) Shutdown () ( err error ) {
157
157
if ! atomic .CompareAndSwapInt32 (& w .stopFlag , 0 , 1 ) {
158
158
return queue .ErrQueueShutdown
159
159
}
160
160
161
161
w .stopOnce .Do (func () {
162
162
close (w .stop )
163
- if err : = w .channel .Cancel (w .opts .tag , true ); err != nil {
164
- w .opts .logger .Error (err )
163
+ if err = w .channel .Cancel (w .opts .tag , true ); err != nil {
164
+ w .opts .logger .Error ("consumer cancel failed:" , err )
165
165
}
166
- if err : = w .conn .Close (); err != nil {
167
- w .opts .logger .Error (err )
166
+ if err = w .conn .Close (); err != nil {
167
+ w .opts .logger .Error ("AMQP connection close error:" , err )
168
168
}
169
169
})
170
- return nil
170
+
171
+ return err
171
172
}
172
173
173
174
// Queue send notification to queue
@@ -214,6 +215,9 @@ loop:
214
215
}
215
216
var data queue.Job
216
217
_ = json .Unmarshal (task .Body , & data )
218
+ if ! w .opts .autoAck {
219
+ task .Ack (w .opts .autoAck )
220
+ }
217
221
return & data , nil
218
222
case <- time .After (1 * time .Second ):
219
223
if clock == 5 {
0 commit comments