我很好奇,如果相关用户选择接收通知,我如何才能知道排队的作业何时成功完成以潜在地通知相关用户。
具体地说,我正在使用一个带有ShouldQueue特征的Laravel Excel导出。它包含一个方便的方法来处理失败的作业,因此如果需要,我可以在失败时通知用户(请参阅https://docs.laravel-excel.com/3.1/exports/queued.html#handling-failures-in-queued-exports)。我假设没有一些成功的方法是没有记录的,或者是我找不到的地方有记录的,所以……
有没有一种方法可以使用Laravel的排队系统来检测作业何时完成?即使我不真正知道状态(成功或失败),并且我只知道作业已完成,我也可以检查导出文件是否存在,以确认是否成功触发通知。
谢谢。
发布于 2021-04-20 08:07:12
因此,虽然@Yudiz Solutions的答案总体上是正确的。我找到了一种更好的方法,就像我提到的那样,它特定于排队的Laravel Excel导出作业。
我刚在https://docs.laravel-excel.com/3.1/exports/queued.html#appending-jobs文档里找到了这个
因此,虽然没有明确的成功方法,但我可以链接到依赖于第一个作业的第二个作业上,并让第二个作业处理通知。
足够有趣的是,我可能已经在文档中滚动过这一部分很多次了,但我并没有意识到它就在那里,或者它是我需要在成功时通知用户的答案。
即使去掉了Laravel Excel导出作业的特定上下文,我认为链接这样的成功通知仍然是可能的,并且对于特定于给定作业的任何作业来说,这可能是一种更好的方法。
@Yudiz Solutions answer更适合于在每个(或至少大多数)作业之后运行的东西。
发布于 2021-04-08 14:25:50
您可以通过将以下代码添加到您的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
https://stackoverflow.com/questions/66996179
复制相似问题