簡體   English   中英

跨鏈接隊列的Laravel數據庫事務(Horizo​​n / Redis)

[英]Laravel database transactions across chained queues (Horizon/Redis)

我已經搜索了幾個小時,我想它可能根本不可能? 如果隊列鏈中的作業失敗,我是否可以回滾此時發生的所有數據庫事務。

DB::transaction(function () {
   ProcessPodcast::withChain([
       new OptimizePodcast,
       new ReleasePodcast
   ])->dispatch();
});

注意:我知道當異步將作業推送到隊列時,上述操作無效,但有沒有辦法獲得此效果?

由於隊列工作者是長期存在的進程,因此可以在鏈式隊列作業中利用數據庫事務。

您需要做的是在ProcessPodcast作業的handle方法上開始一個事務,同時確保在鏈失敗時回滾

// ProcessPodcast parent Job

use DB; // above class, of course

public function handle()
{
    DB::beginTransaction();
}

public function failed(Exception $exception)
{
    DB::rollback();
    // Send user notification of failure, etc...
}

您可以在任何鏈接作業中提交事務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM