\App\ListenersQueueLogSubscriber

队列事件订阅器

职责:SystemJob 包装负责业务内记账(处理中/成功/单次失败),本订阅器负责业务外兜底—— ① JobQueued 回填台账 uuid(关联原生队列表,取消/失败对账的锚点) ② JobProcessing/JobProcessed 幂等兜底(sync 驱动同样触发;包装已记账则跳过) ③ JobFailed 最终失败落账(Laravel 仅在重试耗尽后触发,与包装的逐次记账互补) ④ Looping/WorkerStarting/WorkerStopping 驱动 worker 心跳与实例台账(界面守护)

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 订阅声明 subscribe 分区 2 · 台账兜底 onJobQueued / onProcessing / onProcessed / onFailed 分区 3 · worker 守护 onLooping / onWorkerStarting / onWorkerStopping 分区 4 · 内部辅助 resolveLog / commandOf └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
subscribe()
onJobQueued()
onProcessing()
onProcessed()
onFailed()
onLooping()
onWorkerStarting()
onWorkerStopping()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
resolveLog()
commandOf()
$lastHeartbeatAt
N/A

Properties

$lastHeartbeatAt

$lastHeartbeatAt : ?float

心跳写入时间戳(节流用):worker 空转高频循环下避免每轮都写 Redis/DB

Type

?float

Methods

subscribe()

subscribe(\Illuminate\Events\Dispatcher  $events) : void

订阅队列事件(AppServiceProvider boot 期 Event::subscribe 注册)

Parameters

\Illuminate\Events\Dispatcher $events

onJobQueued()

onJobQueued(\Illuminate\Queue\Events\JobQueued  $event) : void

入队后回填 uuid(dispatch 内同步触发;uuid 在载荷 JSON 内而非 job 对象属性)。 仅 SystemJob 任务登记台账(其余框架任务不进队列中心台账)。

Parameters

\Illuminate\Queue\Events\JobQueued $event

onProcessing()

onProcessing(\Illuminate\Queue\Events\JobProcessing  $event) : void

领取兜底:按 uuid/任务实例定位台账标记处理中(包装已标记则幂等跳过)

Parameters

\Illuminate\Queue\Events\JobProcessing $event

onProcessed()

onProcessed(\Illuminate\Queue\Events\JobProcessed  $event) : void

执行完成兜底:仍停留处理中则补记成功(正常路径由 SystemJob 包装已记账)

Parameters

\Illuminate\Queue\Events\JobProcessed $event

onFailed()

onFailed(\Illuminate\Queue\Events\JobFailed  $event) : void

最终失败兜底(Laravel 仅在重试耗尽后触发):落终态与错误信息

Parameters

\Illuminate\Queue\Events\JobFailed $event

onLooping()

onLooping(\Illuminate\Queue\Events\Looping  $event) : void

worker 每轮循环心跳:节流读配置(:queue.worker_heartbeat_interval_seconds 默认 10 秒;心跳 TTL 默认 5 分钟,10s 粒度绰绰有余;空转高频循环不再放大 Redis/DB 写)

Parameters

\Illuminate\Queue\Events\Looping $event

onWorkerStarting()

onWorkerStarting(\Illuminate\Queue\Events\WorkerStarting  $event) : void

worker 启动注册实例

Parameters

\Illuminate\Queue\Events\WorkerStarting $event

onWorkerStopping()

onWorkerStopping(\Illuminate\Queue\Events\WorkerStopping  $event) : void

worker 退出注销实例

Parameters

\Illuminate\Queue\Events\WorkerStopping $event

resolveLog()

resolveLog(\Illuminate\Contracts\Queue\Job  $job) : ?\App\Models\LogSysJob

台账定位:uuid 优先(JobQueued 已回填),回落从任务载荷反序列化 SystemJob 实例 取 logId(sync 驱动无 uuid 回填时仍可兜底)。

Parameters

\Illuminate\Contracts\Queue\Job $job

Returns

?\App\Models\LogSysJob —

commandOf()

commandOf(\Illuminate\Contracts\Queue\Job  $job) : ?object

从队列载荷反序列化任务实例(失败/非 SystemJob 返回 null)

Parameters

\Illuminate\Contracts\Queue\Job $job

Returns

?object —