问题描述
AutopOChargeCalculation::dispatch($invoice_id,$user_id,$notify)->onQueue('invoice');
AutoSOChargeCalculation::dispatch($invoice_id,$notify)->onQueue('invoice');
AutoSPChargeCalculation::dispatch($invoice_id,$notify)->onQueue('invoice');
inside 他们每个人都用 for 循环调用子作业
foreach ($objects as $object) {
$jobs[] = new CalculateSingleSaleOrderCharge($model,$object,$notify,$i,$total_objects);
$i ++;
}
Bus::chain($jobs)->onQueue('invoice')->dispatch();
}
foreach ($objects as $object) {
$jobs[] = new CalculateSinglePurchaSEOrderCharge($model,$total_objects);
$i ++;
}
Bus::chain($jobs)->onQueue('invoice')->dispatch();
}
foreach ($objects as $object) {
$jobs[] = new CalculateSingleStoragePeriodCharge($model,$total_objects);
$i ++;
}
Bus::chain($jobs)->onQueue('invoice')->dispatch();
}
Bus::chain($jobs)->onQueue('invoice')->dispatch()->withChain(
Bus::chain($jobs)->onQueue('invoice')->dispatch())->withChain(
Bus::chain($jobs)->onQueue('invoice')->dispatch());
Is that Possible?
解决方法
通过新的 Laravel 8 更新,您现在可以将一批作业发送到队列中,此外,您还可以批量链式作业。
use App\Jobs\ReleasePodcast;
use App\Jobs\SendPodcastReleaseNotification;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
Bus::batch([
[
new ReleasePodcast(1),new SendPodcastReleaseNotification(1),],[
new ReleasePodcast(2),new SendPodcastReleaseNotification(2),])->then(function (Batch $batch) {
// ...
})->dispatch();
在此处查看文档。 Chains Within Batches - Laravel 8