【问题标题】: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 服务器并通过队列驱动程序执行。