如何解决Laravel 排队作业成功通知
我很好奇如何知道排队的作业何时成功完成以通知相关用户(如果他们选择接收通知)。
特别是我正在使用带有 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 答案更适合于通常在每个(或至少大多数)作业之后运行的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。