【问题标题】:Communicate back to Laravel via Queue from Lumen?通过 Lumen 的队列与 Laravel 通信?
【发布时间】:2018-01-05 18:21:41
【问题描述】:

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

当队列作业完成或失败时,你会如何回复 Laravel?如果队列工作人员由于某种原因无法与 Laravel 应用进行通信,则需要稍后以某种方式重试。

我已附上系统架构图。如您所见,我的问题是关于红色虚线的。

【问题讨论】:

    标签: php laravel laravel-5.4 lumen


    【解决方案1】:

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

    队列中的作业完成后,您可以在完成后立即dispatch(new NotifyLaravel($jobId))

    这个工作(双关语)的工作是简单地 ping Laravel 以表明队列已经完成了这个特定工作的运行。我不会给出示例实现,但基本上你可以在 Lumen 和 Laravel 之间创建一个共享密钥来“验证”请求。 Lumen 然后只需发送作业 ID 或您用来跟踪它们的标识符。

    如果你的 Laravel 实例离线,你可以简单地抛出一个异常。队列工作者将稍后重试。后者在文档 (https://laravel.com/docs/5.4/queues#job-expirations-and-timeouts) 中有说明。

    【讨论】:

    • @Feilx 谢谢你的回答,我已经考虑过了。您对使用 pusher.com 有何看法?
    • @I'll-Be-Back Pusher dot com 用于通过 WebSocket、iOS 推送功能和 Google 推送功能使用通道实时通知客户端。它不适用于您当前的用例。您可以做的最优化的事情是我在答案中写的,您的 Lumen API 将 JSON 有效负载发送到 Laravel 上的私有端点。
    • 也只是指定;您正在创建的工作 (NotifyLaravel) 将在流明侧创建
    猜你喜欢
    • 1970-01-01
    • 2018-03-15
    • 2014-01-17
    • 2017-09-11
    • 1970-01-01
    • 2023-03-04
    • 2014-08-12
    • 2018-10-18
    • 2014-08-04
    相关资源
    最近更新 更多