Consumir no reconocer mensajes de RabbitMq
He creado un editor simple y un consumidor que se suscribe en la cola usandobasic.consume
.
Mi consumidor reconoce los mensajes cuando el trabajo se ejecuta sin una excepción. Cuando me encuentro con una excepción, no recibo el mensaje y vuelvo antes. Solo los mensajes reconocidos desaparecen de la cola, por lo que está funcionando correctamente.
Ahora quiero que el consumidor vuelva a recoger los mensajes fallidos, pero la única forma de volver a resumir esos mensajes es reiniciando al consumidor.
¿Cómo necesito abordar este caso de uso?
Codigo de configuracion
$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');
Código del consumidor
$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());
}
Código productor
$exchange->publish('message');