|
@@ -110,7 +110,7 @@ abstract class BaseJob
|
|
|
*/
|
|
*/
|
|
|
protected function handleException(Job $job, mixed $data, Throwable|Exception $exception): void
|
|
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),
|
|
'data' => json_encode($data),
|
|
|
'trace' => $exception->getTraceAsString()
|
|
'trace' => $exception->getTraceAsString()
|
|
|
]);
|
|
]);
|
|
@@ -120,17 +120,17 @@ abstract class BaseJob
|
|
|
// 重新发布任务
|
|
// 重新发布任务
|
|
|
$job->release($this->retryDelay);
|
|
$job->release($this->retryDelay);
|
|
|
} else {
|
|
} else {
|
|
|
- // 标记任务失败
|
|
|
|
|
- $job->failed($exception);
|
|
|
|
|
-
|
|
|
|
|
// 执行失败回调
|
|
// 执行失败回调
|
|
|
if ($this->enableFailedCallback) {
|
|
if ($this->enableFailedCallback) {
|
|
|
try {
|
|
try {
|
|
|
$this->onFailed($data);
|
|
$this->onFailed($data);
|
|
|
} catch (Exception $e) {
|
|
} 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
|
|
protected function onFailed(mixed $data): void
|
|
|
{
|
|
{
|
|
|
// 默认失败处理逻辑
|
|
// 默认失败处理逻辑
|
|
|
- Log::error('队列任务执行失败: ' . static::class.' - ' . json_encode($data));
|
|
|
|
|
|
|
+ Log::error('队列任务执行失败: ' . static::class . ' - ' . json_encode($data));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|