Laravel队列失败的作业

8
我正在尝试在作业失败时从其他表记录一些数据。它在失败的作业表中运行得很好,但是我无法让Queue::failing(function($connection, $job, $data)在每次作业失败时都起作用。我尝试将其放置于global.php中,但没有成功。
另一个问题是,$job返回什么?是对象还是只有作业ID?

好的...使用队列时,你使用的是哪个队列驱动程序?是Beanstalkd吗?请发布一些你尝试过的代码。 - justrohu
我正在使用Beanstalk。 - Yuusha
2个回答

19
你应该使用--tries参数调用queue:work,例如:
$ php artisan queue:work sqs --tries=1

如果没有这些参数,您的作业永远不会失败。

但请记得配置您的失败表。

1)创建迁移文件:

$ php artisan queue:failed-table

2)运行迁移以创建表

$ php artisan migrate

3)在queue.php中,您需要配置“失败”的表。例如:

'failed' => array(
    'database' => 'pgsql', 'table' => 'failed_jobs',
),

现在,当任务失败时,它将被插入到failed_jobs表中。

只需运行php artisan queue:failed即可获取失败列表。


2

需要处理全局变量global php,因其导致错误,请进行以下更改:

Queue::failing(function($connection, $job, $data)

致:

Queue::failing(function($connection, $job)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接