我为一个私有API设置了流明。 Laravel在内部向Lumen发出API请求,然后Lumen将排队工作(Amazon SQS)。
当队列作业完成或失败时,您如何回复Laravel?如果队列工作者由于某种原因无法与Laravel应用程序通信,则需要稍后再尝试。
我附上了系统架构图。我的问题是关于红色虚线,你可以看到。
答案 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)中进行了解释。