Verbrauchen nicht anerkennen Nachrichten von RabbitMq

Habe ich ein einfaches erstellen Verleger und Verbraucher, die ein Abonnent in der Warteschlange mit basic.consume.

Meine Verbraucher erkennt die Nachrichten, wenn der job läuft, ohne eine Ausnahme. Wann immer ich eine Ausnahme ich nicht der ack-Nachricht und die Rückkehr zu früh. Nur die anerkannten Meldungen verschwinden aus der Warteschlange, damit das richtig funktioniert.
Jetzt möchte ich die Verbraucher zu Holen, die scheiterte wieder Nachrichten, aber der einzige Weg, um reconsume diese Nachrichten ist durch einen Neustart der Verbraucher.

Wie muss ich diesen Ansatz?

Setup-code

$channel = new AMQPChannel($connection);

$exchange = new AMQPExchange($channel);

$exchange->setName('my-exchange');
$exchange->setType('fanout');
$exchange->declare();

$queue = new AMQPQueue($channel);
$queue->setName('my-queue');
$queue->declare();
$queue->bind('my-exchange');

Consumer-code

$queue->consume(array($this, 'callback'));

public function callback(AMQPEnvelope $msg)
{
    try {
        //Do some business logic
    } catch (Exception $ex) {
        //Log exception
        return;
    }
    return $queue->ack($msg->getDeliveryTag());
}

Hersteller code

$exchange->publish('message');

InformationsquelleAutor der Frage Bram Gerritsen | 2013-07-15

Schreibe einen Kommentar