在Laravel

时间:2017-02-13 10:39:29

标签: php 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个响应中获得更多数据,要在单个队列中处理此数据,则需要更多时间。为此,我想使用动态创建队列,所以有没有办法创建动态队列。我找到了主管,我们可以设置最大队列,但不是动态的。 有人请帮助我。提前谢谢

2 个答案:

答案 0 :(得分: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

中查看一些讨论

答案 1 :(得分:0)

队列不进行处理,它只是排列数据,以便以后处理。因此,您无需像您一样尝试多个队列。

您应该做的是拥有一个包含所有消息有效负载的队列,并使用多个队列工作程序来处理数据。这可以使用Supervisord按照文档完成:

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

numprocs=8