我想批量处理一些排队的作业,我有一个小问题。
laravel在一个任务失败时,会尝试处理下一个任务还是关闭整个任务批?
https://laravel.com/docs/8.x/queues#batch-failures
$batch = Bus::batch([
new FirstJob(),
new SecondJob(),
new ThirdJob(),
new FourthJob(),
new LastJob(),
])->then(function (Batch $batch) {
// All jobs completed successfully...
})->catch(function (Batch $batch, Throwable $e) {
// First batch job failure detected...
})->finally(function (Batch $batch) {
// The batch has finished executing...
})->dispatch();
例如,如果FourthJob()即将失败,批处理是否将尝试LastJob()?
2条答案
按热度按时间wixjitnu1#
批处理执行可以根据您是否将
batch
设置为接受failures
或not
来继续尝试lastJob()
。dtcbnfnu2#
默认情况下,
LastJob()
不会执行。当一个批处理中的作业失败时,Laravel会自动将该批处理标记为“cancelled”。如果你愿意,你可以禁用此行为,这样作业失败时就不会自动将该批处理标记为“cancelled”。这可以通过在分派批处理时调用allowFailures方法来实现: