2017-02-13 5 views
0

Я использую Laravel очереди для обработки данных одного за другим, это мой код для одной очередиДинамическое создание очередей в Laravel

public function webhooks(Request $request) 
{ 
{ 
     $data = 'i am passing some data'; 
     Log::info("Request Cycle with Queues Begins"); 
     $job = (new webhookQueue($data)); 
     $this->dispatch($job); 
     Log::info("Request Cycle with Queues Ends"); 
} 
} 

, если я буду получать больше данных на уровне около 1000 ответов, обрабатывать это в одиночной очереди займет больше времени. Для этого я хочу динамически создавать очереди, так что есть ли способ создания динамических очередей. Я нашел супервизора для этого, где мы можем установить максимальные очереди, но не динамические. Кто-нибудь, пожалуйста, помогите мне. Заранее благодарю

ответ

0

Вы можете добавить количество процессов в superviosr numprocs = 8 и создать задание интеллектуальным способом на основе данных. Я бы предложил разделить ваши данные на куски каждого куска на 500, а затем отправить задание два раза.

//job 1 
$job1 = (new webhookQueue($data1)); 
$this->dispatch($job1); 

//job2 
$job1 = (new webhookQueue($data2)); 
$this->dispatch($job12); 

Надеюсь, это сработает для вас. Вы также можете ознакомиться с некоторыми обсуждениями в laracast https://laracasts.com/discuss/channels/laravel/running-multiple-queue-workers

+0

Спасибо за ответ, как вы сказали, что мы можем установить 8 процесс с помощью супервизора, мы можем установить динамический процесс за ответ , и удалите этот процесс после завершения. –

0

Очередь не обрабатывает, она просто строит данные, чтобы их можно было обработать позднее. Поэтому нет необходимости запускать несколько очередей, как вы пытаетесь.

Что вы должны сделать, это иметь отдельную очередь, которая содержит всю полезную нагрузку сообщения и использовать несколько сотрудников очереди для обработки данных. Это может быть сделано с Supervisord в соответствии с Документами:

https://laravel.com/docs/5.1/queues#supervisor-configuration

т.е.

numprocs=8 
+0

Благодарим вас за ответ, поскольку вы сказали, что мы можем установить 8 процессов с помощью супервизора, можем ли мы установить динамический процесс за ответ и удалим этот процесс после завершения. –

+0

Это не то, что поддерживается Supervisor. Однако, если в очереди нет заданий, то экземпляры рабочих очередей будут использовать очень маленький системный ресурс. – edcs

+0

ОК, я понял, что такое максимальные numprocs мы можем установить? –

Смежные вопросы