【问题标题】:laravel queue without DB query没有数据库查询的 laravel 队列
【发布时间】:2018-07-17 13:16:21
【问题描述】:

我想最小化传入请求的数据库查询。它目前需要写入 6 个不同的表。在返回响应之前不需要进行处理。 因此,我考虑 laravel 队列,但我想知道是否也可以摆脱写入队列/作业表所需的单独查询。我可以在本地存储作业而不是将它们写入数据库吗?

一种可能的破解方法是有一个单独的路由,我将数据发送到该路由以进行处理。这样我就不需要写入数据库,而是可以将数据转发到该路由而不等待响应。这会比将作业写入数据库更快吗?

【问题讨论】:

标签: laravel asynchronous queue jobs


【解决方案1】:

如果您不想使用本机队列驱动程序(即使用 DB),我可以建议您使用 Rabbit-MQ。这是 Laravel 的一个很好的驱动实现:

RabbitMQ Queue driver for Larave

您必须使用以下命令在 CLI 中运行守护程序服务:

./artisan queue:work(deamon 版本 - 每次更改代码后,您都必须调用 ./artisan queue:restart 来刷新队列代码)

./artisan queue:listen(针对./artisan queue:work --once流程生产者)

或将Supervisor 用于:

./artisan queue:work --once

(我个人最喜欢的)

之后,您将放入队列的每个任务(dispatch()\Queue::push())将被传递到 RabbitMQ 服务器并通过队列驱动程序执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2014-06-04
    • 2017-11-18
    • 2020-03-27
    • 2012-08-20
    • 2020-08-19
    相关资源
    最近更新 更多