Laravel 排队作业成功通知

Laravel queued job success notification

我很好奇,如果相关用户选择接收通知,我如何知道排队的作业何时成功完成以潜在地通知相关用户。

具体来说,我正在使用具有 ShouldQueue 特性的 Laravel Excel 导出。它包括一个处理失败作业的便捷方法,因此我可以在需要时通知用户失败(请参阅 https://docs.laravel-excel.com/3.1/exports/queued.html#handling-failures-in-queued-exports)。我假设没有一些未记录的成功方法,或者没有记录在我找不到它的地方,所以....

有没有办法使用 Laravel 的排队系统来检测作业何时完成?即使我不知道状态(成功或失败),我只知道工作已完成,我也可以检查导出文件是否存在以确认它是否成功触发通知。

谢谢。

您可以通过将以下代码添加到您的 AppServiceProvider.php

来管理它
public function boot()
{
Queue::before(function (JobProcessing $event) {
// $event->connectionName
// $event->job
// $event->job->payload()
});

Queue::after(function (JobProcessed $event) {
// $event->connectionName
// $event->job
// $event->job->payload()
});
}

更多详情,请参考https://laravel.com/docs/8.x/queues

所以虽然@Yudiz Solutions 的回答总体上是正确的。我找到了一种更好的方法,它特定于排队的 Laravel Excel 导出作业,就像我提到的那样。

我刚在文档中找到这个 https://docs.laravel-excel.com/3.1/exports/queued.html#appending-jobs

因此,虽然没有像失败那样的显式成功方法,但我可以链接依赖于第一个作业的第二个作业,并让第二个作业处理通知。

有趣的是,我可能已经在文档中的这个部分滚动了很多次,却没有意识到它在那里,或者它是我在成功时通知用户的需要的答案。

即使去掉这是一个 Laravel Excel 导出工作的特定上下文,我认为像这样链接一个成功通知仍然是可能的,并且可能是完成任何工作的更好方法它特定于给定的工作。

@Yudiz Solutions 的答案更适合通常在每个(或至少大多数)工作之后 运行 的事情。