title: Consuming not acknowledge messages from RabbitMq
body: <p>I have create a simple publisher and a consumer which subscribes on the queue using <code>basic.consume</code>. </p>
  
  <p>My consumer acknowledges the messages when the job runs without an exception. Whenever I run into an exception I don´t ack the message and return early. Only the acknowledged messages disappear from the queue, so that´s working correctly.<br>
  Now I want the consumer to pick up the failed messages again, but the only way to reconsume those messages is by restarting the consumer. </p>
  
  <p>How do I need to approach this use case?</p>
  
  <p><strong>Setup code</strong></p>
  
  <pre><code>$channel = new AMQPChannel($connection);
  
  $exchange = new AMQPExchange($channel);
  
  $exchange-&gt;setName('my-exchange');
  $exchange-&gt;setType('fanout');
  $exchange-&gt;declare();
  
  $queue = new AMQPQueue($channel);
  $queue-&gt;setName('my-queue');
  $queue-&gt;declare();
  $queue-&gt;bind('my-exchange');
  </code></pre>
  
  <p><strong>Consumer code</strong></p>
  
  <pre><code>$queue-&gt;consume(array($this, 'callback'));
  
  public function callback(AMQPEnvelope $msg)
  {
      try {
          //Do some business logic
      } catch (Exception $ex) {
          //Log exception
          return;
      }
      return $queue-&gt;ack($msg-&gt;getDeliveryTag());
  }
  </code></pre>
  
  <p><strong>Producer code</strong></p>
  
  <pre><code>$exchange-&gt;publish('message');
  </code></pre>