微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为作业批次 Laravel 8 中的每个失败作业调用`catch` 闭包

如何解决如何为作业批次 Laravel 8 中的每个失败作业调用`catch` 闭包

Laravel 8 引入了作业批处理,它允许批量执行作业并在批处理完成和失败时执行操作。当批处理中的作业失败时,将执行 catch 回调并将整个批处理标记为“已取消”according to the documentation。如果您不希望批次取消(在第一次失败时),您可以在分派批次时附加方法 allowFailures()

$batch = Bus::batch([
    // ...
])->then(function (Batch $batch) {
    // All jobs completed successfully...
})->catch(function (Batch $batch,Throwable $e) {
    // First batch job failure detected...
    
    // Todo: call this for every Failed job

})->allowFailures()->dispatch();

它按预期工作,但是我想知道是否可以为每个失败的作业调用 catch 闭包? (在这种情况下使用 allowFailures

解决方法

您可以使用 Jobs 中的尝试次数来查找失败的作业

  if ($this->attempts() > 1) {
  // your code
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。