beforeMessage = JobStarted::on($this->channel)->withMessage($message); return $this; } public function after(string $message): self { $this->afterMessage = JobFinished::on($this->channel)->withMessage($message); return $this; } public function failed(string $message): self { $this->failedMessage = JobFailed::on($this->channel)->withMessage($message); return $this; } public function shouldReload(): self { $this->afterMessage->shouldReload(); $this->failedMessage->shouldReload(); return $this; } public function handle(JobDecorator $job, Closure $next): void { event($this->beforeMessage); try { $next($job); } catch (Throwable $e) { event($this->failedMessage); throw $e; } event($this->afterMessage); } }