繁体   English   中英

Laravel 排队作业成功通知

[英]Laravel queued job success notification

我很好奇,如果他们选择接收通知,我如何知道排队作业何时成功完成以可能通知相关用户。

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

有没有办法使用 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 导出作业的特定上下文我认为链接这样的成功通知仍然是可能的,并且可能是 go 特定于给定作业的更好方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM