I have three Laravel Parent jobs name
AutoPOChargeCalculation::dispatch($invoice_id, $user_id, $notify)->onQueue('invoice');
AutoSOChargeCalculation::dispatch($invoice_id, $user_id, $notify)->onQueue('invoice');
AutoSPChargeCalculation::dispatch($invoice_id, $user_id, $notify)->onQueue('invoice');
inside Each of them calling child jobs with for loop
foreach ($objects as $object) {
$jobs[] = new CalculateSingleSaleOrderCharge($model, $object, $user_id, $notify, $i, $total_objects);
$i ++;
}
Bus::chain($jobs)->onQueue('invoice')->dispatch();
}
foreach ($objects as $object) {
$jobs[] = new CalculateSinglePurchaseOrderCharge($model, $object, $user_id, $notify, $i, $total_objects);
$i ++;
}
Bus::chain($jobs)->onQueue('invoice')->dispatch();
}
foreach ($objects as $object) {
$jobs[] = new CalculateSingleStoragePeriodCharge($model, $object, $user_id, $notify, $i, $total_objects);
$i ++;
}
Bus::chain($jobs)->onQueue('invoice')->dispatch();
}
Now I am thinking to removed parent jobs and Chained the all child jobs bus
Bus::chain($jobs)->onQueue('invoice')->dispatch()->withChain(
Bus::chain($jobs)->onQueue('invoice')->dispatch())->withChain(
Bus::chain($jobs)->onQueue('invoice')->dispatch());
Is that Possible?
With new Laravel 8 update you can now send a batch of jobs to the queue, in addition to that, you can also batch chained jobs.
Check it out here for the documentation. Chains Within Batches - Laravel 8