【问题标题】:How to Chain Bus::chain() in laravel如何在 laravel 中链接 Bus::chain()
【发布时间】:2021-01-25 09:43:00
【问题描述】:

我有三个 Laravel Parent 工作名称

        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');

他们每个人都用 for 循环调用子作业


 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();
    }

现在我正在考虑删除父作业并链接所有子作业总线


 Bus::chain($jobs)->onQueue('invoice')->dispatch()->withChain(
 Bus::chain($jobs)->onQueue('invoice')->dispatch())->withChain(
 Bus::chain($jobs)->onQueue('invoice')->dispatch());


Is that Possible?

【问题讨论】:

    标签: laravel laravel-8 laravel-queue laravel-jobs laravel-horizon


    【解决方案1】:

    随着新的 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

    【讨论】:

      猜你喜欢
      • 2018-09-29
      • 2013-02-20
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多