Consumir não reconhece mensagens do RabbitMq
Eu criei um editor simples e um consumidor que se inscreve na fila usandobasic.consume
.
Meu consumidor reconhece as mensagens quando o trabalho é executado sem exceção. Sempre que me deparo com uma exceção, não entendo a mensagem e volto cedo. Apenas as mensagens reconhecidas desaparecem da fila, então isso está funcionando corretamente.
Agora, quero que o consumidor recupere as mensagens com falha novamente, mas a única maneira de reconsiderar essas mensagens é reiniciando o consumidor.
Como preciso abordar esse caso de uso?
Código de configuração
$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 do 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 do produtor
$exchange->publish('message');