我正在使用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 :(得分: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