You can use nack with consume, using those flags :
- On consume method : AMQP_NOPARAM
- On nack method : AMQP_REQUEUE
(PECL amqp >= Unknown)
AMQPQueue::nack — Mark a message as explicitly not acknowledged.
Mark the message identified by
delivery_tag as explicitly not acknowledged. This method can only be called on messages that have not yet been acknowledged, meaning that messages retrieved with by AMQPQueue::consume() and AMQPQueue::get() and using the
AMQP_AUTOACK flag are not eligible.
When called, the broker will immediately put the message back onto the queue, instead of waiting until the connection is closed.
This method is only supported by the RabbitMQ broker. The behavior of calling this method while connected to any other broker is undefined.
The delivery tag by which to identify the message.
A bitmask of flags.
Throws AMQPChannelException if the channel is not open.
Throws AMQPConnectionException if the connection to the broker was lost.
TRUE on success or
FALSE on failure.