Acknowledge message(s) $queue->ack()
after successful processing or even consume/get them with AMQP_AUTOACK
flag.
UPD:
Based on your code:
1. Ack'ing messagewhile ($envelope = $queue->get()) {
//Function that processes the message
process_message($envelope->getBody());
$queue->ack($envelope->getDeliveryTag());
}
2. Getting it with AMQP_AUTOACK
flag:
while ($envelope = $queue->get(AMQP_AUTOACK)) {
//Function that processes the message
process_message($envelope->getBody());
}
P.S.:
Check AMQPQueue::consume documentation, looks like it is more suitable here.
3. You can consume and ack message after it been processed:$queue->consume(function ($envelope, $queue) {
process_message($envelope->getBody());
$queue->ack($envelope->getDeliveryTag());
});
4. or consume with AMQP_AUTOACK
flag, but when procesing fails you won't be able to process message again:
$queue->consume(function ($envelope, $queue) {
process_message($envelope->getBody());
$queue->ack($envelope->getDeliveryTag());
}, AMQP_AUTOACK);
Conclusion: I would recommend to use #3 solution, but it's up to you.