从 Lumen 通过队列与 Laravel 通信?
Communicate back to Laravel via Queue from Lumen?
我为私人设置了 Lumen API。 Laravel 在内部向 Lumen 发出 API 请求,然后 Lumen 将对作业进行排队 (Amazon SQS)。
当队列作业完成或失败时,您将如何回复 Laravel?如果队列工作器出于某种原因无法与 Laravel 应用通信,则需要稍后以某种方式重试。
附上系统架构图。如您所见,我的问题是关于红色虚线的。
首先使用您需要的任何参数(作业 ID、任务 ID、用户 ID 等)创建一个名为 NotifyLaravel
的新作业。
队列中的作业完成后,您可以在完成后立即dispatch(new NotifyLaravel($jobId))
。
这项工作(双关语意)的工作是简单地 ping Laravel 以指示队列已完成 运行 此特定工作。我不会给出示例实现,但基本上您可以在 Lumen 和 Laravel 到 "authenticate" 请求之间创建一个共享密钥。然后,Lumen 只需发送工作 ID 或您用来跟踪它们的标识符。
如果您的 Laravel 实例离线,您可以简单地抛出异常。队列工作人员将稍后重试。后者在文档中进行了解释 (https://laravel.com/docs/5.4/queues#job-expirations-and-timeouts)。
我为私人设置了 Lumen API。 Laravel 在内部向 Lumen 发出 API 请求,然后 Lumen 将对作业进行排队 (Amazon SQS)。
当队列作业完成或失败时,您将如何回复 Laravel?如果队列工作器出于某种原因无法与 Laravel 应用通信,则需要稍后以某种方式重试。
附上系统架构图。如您所见,我的问题是关于红色虚线的。
首先使用您需要的任何参数(作业 ID、任务 ID、用户 ID 等)创建一个名为 NotifyLaravel
的新作业。
队列中的作业完成后,您可以在完成后立即dispatch(new NotifyLaravel($jobId))
。
这项工作(双关语意)的工作是简单地 ping Laravel 以指示队列已完成 运行 此特定工作。我不会给出示例实现,但基本上您可以在 Lumen 和 Laravel 到 "authenticate" 请求之间创建一个共享密钥。然后,Lumen 只需发送工作 ID 或您用来跟踪它们的标识符。
如果您的 Laravel 实例离线,您可以简单地抛出异常。队列工作人员将稍后重试。后者在文档中进行了解释 (https://laravel.com/docs/5.4/queues#job-expirations-and-timeouts)。