Laravel 队列驱动程序未在作业上调用handle(),但队列:监听守护进程正在记录已处理的作业

问题描述 投票:0回答:1

我接手了一个 Laravel 5.2 项目,其中

handle()
sync
队列驱动程序成功调用。

我需要一个支持

dispatch(..)->delay(..)
的驱动程序,并尝试配置
database
beanstalkd
,有多种变化,但没有成功 -
handle()
不再被调用。

当前设置

我正在使用 Forge 进行服务器管理,并设置了一个守护进程,该守护进程由 Supervisor 自动保持运行,用于以下命令:

php /home/forge/my.domain.com/envoyer/current/artisan 队列:listen --sleep=3 --tries=3

我还尝试过queue:work,命名“database/beanstalkd”,指定或不指定 --sleep、--tries、--deamon

我有 一个活跃的 beanstalkd 工作人员在 forge 上运行

我已将 Envoyer 中的

beanstalkd
中的默认驱动程序设置为
\config\queue.php
和我的
QUEUE_DRIVER=beanstalkd
中的
.env
,这对于其他环境变量来说效果很好。

构建部署后,Envoyer 成功运行以下命令:

php artisan config:clear
php artisan migrate
php artisan cache:clear
php artisan queue:restart

调试信息

我的

queue:listen
守护进程在 .forge 中生成日志 说它处理了一项作业!

[2017-07-04 08:59:13] 已处理:App\Jobs\GenerateRailwayReport

该工作类别的定义如下:

class GenerateRailwayReport extends Job implements ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    protected $task_id;

    public function __construct($task_id)
    {
        $this->task_id = $task_id;
        clock("GenerateRailwayReport constructed"); // Logs Fine
    }

    public function handle()
    {
        clock("Handling Generation of railway report"); // Never Logs
        //Bunch of stuff all commented out during my testing
    }

    public function failed(Exception $e)
    {
        clock("Task failed with exception:"); // Never Logs
        clock($e);
    }
}

我的 .forge 中的 beanstalkd 工作日志中没有输出

我的 failed_jobs 表中没有任何内容。

-真的非常感谢此时的任何帮助!

php laravel server queue forge
1个回答
0
投票

尝试添加 Dispatchable 和 Queueable 来使用

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
© www.soinside.com 2019 - 2024. All rights reserved.