通过Lumen的队列回到Laravel?

时间:2017-07-29 22:08:59

标签: php laravel laravel-5.4 lumen

我为一个私有API设置了流明。 Laravel在内部向Lumen发出API请求,然后Lumen将排队工作(Amazon SQS)。

当队列作业完成或失败时,您如何回复Laravel?如果队列工作者由于某种原因无法与Laravel应用程序通信,则需要稍后再尝试。

我附上了系统架构图。我的问题是关于红色虚线,你可以看到。

enter image description here

1 个答案:

答案 0 :(得分:1)

首先创建一个名为NotifyLaravel的新作业,其中包含您需要的任何参数(作业ID,任务ID,用户ID等)。

排队中的工作完成后,您可以在完成后dispatch(new NotifyLaravel($jobId))完成。

这项工作(双关语)的工作就是简单地对Laravel进行ping操作,以指示Queue已完成此特定作业的运行。我不会给出一个示例实现,但基本上你可以在Lumen和Laravel之间创建一个共享秘密来验证"请求。然后,Lumen只发送您用来跟踪它们的工作ID或标识符。

如果您的Laravel实例处于脱机状态,您只需抛出异常即可。队列工作程序稍后将重试。后者在文档(https://laravel.com/docs/5.4/queues#job-expirations-and-timeouts)中进行了解释。