У меня есть массив, содержащий около 8 000 биржевых котировок, которые я пытаюсь поставить в очередь; очередь предназначена для получения массива биржевых тикеров ($ символов []), а затем передает их каждому рабочему/потребителю (какой бы жаргон вы ни выбрали).Очереди Laravel - Передача данных в очередь
Вот что мой QueueController ток выглядит следующим образом:
Class QueueController extends \BaseController {
public function stocks()
{
$symbols = $this->select_symbols();
Queue::push('StockQueue', array('symbols' => $symbols));
}
...
}
С моей QueueController, я звоню метод, чтобы получить список символов акций и передачи его в StockQueue класса как $ данных.
public function fire($job, $data)
{
$symbols = $data; // print_r shows all symbols...
// Get Quote Data for Symbol
$quote = $this->yql_get_quote($symbol);
// Get Key Stats for Symbol
$keystats = $this->yql_get_keystats($symbol);
// Merge Quote and Keystats into an Array
$array[] = $quote;
$array[] = $keystats;
// Save Data to DB
$this->yql_save_results($array, $symbol);
$job->delete();
}
Это не то, чего я пытаюсь достичь; то, что мне нужно сделать, это передать каждый символ, один за другим, в класс StockQueue и заставить его обрабатывать его как задачу.
Если бы я должен был обернуть метод StockQueue-> stock() в цикле while, он попытался бы передать все ~ 8 000 в (из того, что я понимаю) немедленно в очередь. Было бы это вредно или это лучший способ сделать это? Я не смог найти много примеров для PHP RPC Message Queuing в Интернете, поэтому я просто интересуюсь лучшими практиками, так как я нахожусь в правильном процессе.
С этим, как я могу запустить несколько рабочих для этой очереди? Скажем, я хочу 5 рабочих (в зависимости от количества ресурсов, которые каждый из них берет, я это выясню) для обработки этих задач, чтобы сократить время обработки на ~ 4/5. Как мне это сделать?
Я бы просто запустил php artisan queue:listen
пять раз?
И для ясности я использую beanstalkd и supervisord для выполнения очереди сообщений/мониторинга.
Я с нетерпением жду вашего совета и понимания.
Awesome. Спасибо за понимание. Я собираюсь попробовать это сегодня вечером. – DroBuddy