/** * @param string $queue * * @return self */ public function useQueue($queue) { if ($this->using != $queue) { $this->using = $queue; $this->queue = $this->client->getQueueRef($queue); } return $this; }
/** * Execute the console command. * * @return void */ public function fire() { $queue = $this->argument('queue'); $connection = $this->option('connection'); $config = config("queue.connections.{$connection}"); if (!$queue) { $queue = $config['queue']; } $client = new Client($config['endpoint'], $config['key'], $config['secret']); $queue = $client->getQueueRef($queue); $hasMessage = true; while ($hasMessage) { $this->info('Peeking messages (Polling...)'); try { $response = $queue->batchPeekMessage(15); if ($response->getMessages()) { $hasMessage = true; } else { $hasMessage = false; } } catch (Exception $e) { $this->info('no messages'); break; } $response = $queue->batchReceiveMessage(new BatchReceiveMessageRequest(15, 30)); $handles = []; /** * @var \Aliyun\MNS\Model\Message $message */ foreach ($response->getMessages() as $message) { $handles[] = $message->getReceiptHandle(); } $response = $queue->batchDeleteMessage($handles); if ($response->isSucceed()) { foreach ($handles as $handle) { $this->info(sprintf("The message: %s deleted success", $handle)); } } } }