没有数据库查询的laravel队列

时间:2018-02-07 09:47:38

标签: laravel asynchronous queue jobs

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

一个可能的黑客就是有一个单独的路由,我将数据发送到处理。这样我就不需要写入数据库,而只需将数据转发到该路由而无需等待响应。这会比将作业写入数据库更快吗?

1 个答案:

答案 0 :(得分:1)

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

RabbitMQ Queue driver for Larave

您必须使用以下命令在CLI中运行deamon服务:

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

./artisan queue:listen(适用于./artisan queue:work --once流程制作者)

或使用Supervisor

./artisan queue:work --once

(我个人最喜欢的)

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