Ideally we would only like to see an ack sent when the message has been processed and the IWorker is finished. This currently isn't the case. Since The IWorker is another thread which proceeds on its own, the callback set by onComplete is executed as soon as the IAMQPWorker finishes its call to IWorker::AddMessage.
Configure IAMQPWorker and IWorker with either automatic ack by IAMQPWorker or allow IWorker to send the ack when it has finished.