public function retry(RetryCommand $command) { if ($this->logger) { $this->logger->info(sprintf('[RETRY] command [%s] , tentative number %d', get_class($command->getCommand()), $command->getTryCount())); } try { $this->commandBus->handle($command->getCommand()); } catch (\Exception $e) { throw new CommandHandlerFailedException($command, $e); } }
public function onFail(CommandHandlerFailedException $exception) { $command = $exception->getCommand(); if ($command instanceof RetryCommand) { if ($command->getTryCount() === $this->failOnCount) { $command = new FailedCommand($command->getCommand(), $this->failOnCount); } else { $command->incrementTryCount(); } } elseif ($command instanceof FailedCommand) { if ($this->logger) { $this->logger->error(sprintf('[RetryThenFailStrategy] command [%s] go to failed queue.', get_class($command->getCommand()))); } if ($this->requeueOnFail) { $command->incrementTryCount(); } else { return; } } else { $command = new RetryCommand($command); } if ($this->logger) { $this->logger->error(sprintf('[RetryThenFailStrategy] command [%s] failed, attemps %d.', get_class($command->getCommand()), $command->getTryCount())); } $this->commandBus->handle($command, $this->priority); }