소스 검색

fix(job): 修复队列任务异常处理逻辑

- 修正异常日志中的标点符号错误
- 移除重复的失败标记调用
- 添加异常重新抛出以触发 JobFailed 事件
- 优化失败回调异常的日志记录格式
- 确保任务失败时正确记录到数据库
runphp 1 주 전
부모
커밋
e015c9a579
1개의 변경된 파일6개의 추가작업 그리고 6개의 파일을 삭제
  1. 6 6
      src/Job/BaseJob.php

+ 6 - 6
src/Job/BaseJob.php

@@ -110,7 +110,7 @@ abstract class BaseJob
      */
     protected function handleException(Job $job, mixed $data, Throwable|Exception $exception): void
     {
-        Log::error('队列任务执行异常: ' . static::class . ' - ' . $exception->getMessage().'{data},{trace}', [
+        Log::error('队列任务执行异常' . static::class . ' - ' . $exception->getMessage() . '{data},{trace}', [
             'data' => json_encode($data),
             'trace' => $exception->getTraceAsString()
         ]);
@@ -120,17 +120,17 @@ abstract class BaseJob
             // 重新发布任务
             $job->release($this->retryDelay);
         } else {
-            // 标记任务失败
-            $job->failed($exception);
-
             // 执行失败回调
             if ($this->enableFailedCallback) {
                 try {
                     $this->onFailed($data);
                 } catch (Exception $e) {
-                    Log::error('任务失败回调执行异常: ' . $e->getMessage());
+                    Log::error('任务失败回调执行异常' . $e->getMessage());
                 }
             }
+
+            // 重新抛出异常,让 Worker 触发 JobFailed 事件并记录到数据库
+            throw $exception;
         }
     }
 
@@ -142,7 +142,7 @@ abstract class BaseJob
     protected function onFailed(mixed $data): void
     {
         // 默认失败处理逻辑
-        Log::error('队列任务执行失败: ' . static::class.' - ' . json_encode($data));
+        Log::error('队列任务执行失败: ' . static::class . ' - ' . json_encode($data));
     }
 
     /**