【问题标题】:Lumen queue jobs with database drivers doesn't populate table jobs带有数据库驱动程序的流明队列作业不会填充表作业
【发布时间】:2018-01-19 09:17:18
【问题描述】:

我是使用 laravel/lumen 的新手

几个小时前我生成了一个新的流明项目,我正在尝试使用 数据库 驱动程序将作业发送到默认队列。

我的 .env 文件看起来像这样

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=xxxx

CACHE_DRIVER=file
QUEUE_DRIVER=database

在Queues - Lumen 官方页面之后,我生成了一个迁移以创建 jobs 和 failed_jobs 表。

config/queue.php文件有默认配置

问题:

  1. 在运行命令php artisan queue:work 之前,我尝试将作业发送到队列Queue::push(new SendEmailJob) 但是它会立即运行并且我还没有运行命令php artisan queue:work。 我检查了数据库和表 job 是空的。
  2. 我运行命令php artisan queue:work 向特定端点发出请求,使用此行Queue::push(new SendEmailJob) 或dispatch(new SendEmailJob()) 之一将作业放入队列 我没有收到任何错误,但作业队列仍然是空的

我做错了什么?

为什么在我运行命令 php artisan queue:work 之前排队处理所有作业?

提前致谢

【问题讨论】:

    标签: queue laravel-5.4 jobs lumen lumen-5.4


    【解决方案1】:
    1. 您可以分派作业并在执行前请求延迟:

    $this->dispatch((new ProcessJob($id))->delay(10)); // 10 毫秒

    1. 确保工作器没有运行:

    ps aux|grep 队列

    如果是这样,杀了它。虽然最好的做法是在任何代码更改后重新启动工作器:

    php 工匠队列:重启

    【讨论】:

      【解决方案2】:

      APP.PHP

      if(\Illuminate\Support\Facades\Schema::hasTable("jobs")) 队列::push(new ProcessCenterJob());

      【讨论】:

        猜你喜欢
        • 2018-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-06
        • 2016-03-04
        • 2017-02-10
        • 2021-10-17
        相关资源
        最近更新 更多