首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel队列作业成功通知

Laravel队列作业成功通知
EN

Stack Overflow用户
提问于 2021-04-08 09:29:17
回答 2查看 481关注 0票数 1

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

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

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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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更适合于在每个(或至少大多数)作业之后运行的东西。

票数 0
EN

Stack Overflow用户

发布于 2021-04-08 14:25:50

您可以通过将以下代码添加到您的AppServiceProvider.php来管理这一点

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66996179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档