Skip to content

Commit 8608ea1

Browse files
committed
Merge pull request #2 from tejerka/master
fix PurgeQueues Command
2 parents 9334c87 + 306bded commit 8608ea1

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

Command/PurgeQueuesCommand.php

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ protected function configure()
3232
->setDescription('Purge queues')
3333
->addOption('file', 'f', InputOption::VALUE_REQUIRED, 'File to read')
3434
->addOption('force', null, InputOption::VALUE_NONE, 'If set, the task will not ask for confirm purge')
35+
->addOption('priority', 'p', InputOption::VALUE_OPTIONAL, 'Get messages from specific priority')
3536
->addArgument('queues', InputArgument::IS_ARRAY, 'queues to purge')
3637
->setHelp(<<<HELP
3738
This command purges queues.
@@ -52,9 +53,10 @@ protected function configure()
5253
/**
5354
* @param QueueClientInterface $queueClient
5455
* @param string $fileName
56+
* @param string|null $priority
5557
* @return int
5658
*/
57-
private function purgeFromFile($queueClient, $fileName)
59+
private function purgeFromFile($queueClient, $fileName, $priority)
5860
{
5961
try {
6062
$processor = new Processor();
@@ -67,17 +69,17 @@ private function purgeFromFile($queueClient, $fileName)
6769
return 1;
6870
}
6971
array_walk_recursive($processedConfiguration, 'ReputationVIP\Bundle\QueueClientBundle\QueueClientFactory::resolveParameters', $this->getContainer());
70-
$this->output->write('Start delete queue.', Output::INFO);
72+
$this->output->write('Start purge queue.', Output::INFO);
7173
foreach ($processedConfiguration[QueuesConfiguration::QUEUES_NODE] as $queue) {
7274
$queueName = $queue[QueuesConfiguration::QUEUE_NAME_NODE];
7375
try {
74-
$queueClient->deleteQueue($queueName);
75-
$this->output->write('Queue ' . $queueName . ' deleted.', Output::INFO);
76+
$queueClient->purgeQueue($queueName, $priority);
77+
$this->output->write('Queue ' . $queueName . ' purged.', Output::INFO);
7678
} catch (\Exception $e) {
7779
$this->output->write($e->getMessage(), Output::WARNING);
7880
}
7981
}
80-
$this->output->write('End delete queue.', Output::INFO);
82+
$this->output->write('End purge queue.', Output::INFO);
8183

8284
return 0;
8385
}
@@ -91,6 +93,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
9193
{
9294
$helper = $this->getHelper('question');
9395
$force = $input->getOption('force') ? true : false;
96+
9497
try {
9598
/** @var LoggerInterface $logger */
9699
$logger = $this->getContainer()->get('logger');
@@ -106,14 +109,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
106109

107110
return 1;
108111
}
112+
$priority = null;
113+
if ($input->getOption('priority')) {
114+
$priority = $input->getOption('priority');
115+
if (!in_array($priority, $queueClient->getPriorityHandler()->getAll())) {
116+
throw new \InvalidArgumentException('Priority "' . $priority . '" not found.');
117+
}
118+
}
109119
if ($input->getOption('file')) {
110120
$fileName = $input->getOption('file');
111121
if (!($force || $helper->ask($input, $output, new ConfirmationQuestion('Purge queues in file "' . $fileName . '"?', false)))) {
112122

113123
return 0;
114124
}
115125

116-
return $this->purgeFromFile($queueClient, $fileName);
126+
return $this->purgeFromFile($queueClient, $fileName, $priority);
117127
} else {
118128
$queues = $input->getArgument('queues');
119129
if (count($queues)) {
@@ -123,7 +133,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
123133
}
124134
foreach ($queues as $queue) {
125135
try {
126-
$queueClient->purgeQueue($queue);
136+
$queueClient->purgeQueue($queue, $priority);
127137
$this->output->write('Queue ' . $queue . ' purged.', Output::INFO);
128138
} catch (\Exception $e) {
129139
$this->output->write($e->getMessage(), Output::WARNING);
@@ -139,7 +149,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
139149
return 0;
140150
}
141151

142-
return $this->purgeFromFile($queueClient, $fileName);
152+
return $this->purgeFromFile($queueClient, $fileName, $priority);
143153
} catch (InvalidArgumentException $e) {
144154
$this->output->write('No queue_client.queues_file parameter found.', Output::CRITICAL);
145155

0 commit comments

Comments
 (0)