1

我正在使用 Iron-io/iron_mq 1.5.1 运行 Laravel 4.1.25,这是我第一次尝试排队。根据文档(http://laravel.com/docs/queues),当您处理完作业后,您应该将其从队列中删除。

但是,在我的测试过程中,我注意到 Laravel 会在任何作业引发异常(记录的行为)时将其返回到 Iron.io 队列,但如果作业成功且没有引发异常,它就会从队列中消失。

这是 Iron.io 特有的东西(使用拉队列)吗?如果我$job->delete()在最后运行会不会受到伤害,尽管 Laravel 已经在清除已处理的作业?

4

1 回答 1

3

所以在对源代码进行了一番挖掘之后,我发现如果你添加public $delete = true;到包含你的fire()方法的类中,Laravel 会自动删除已完成的作业。这是在调用之后从 中引用的Illuminate\Queue\Worker process(),它检查的地方。$job->autoDelete()$job->fire()

在我的情况下,这没有设置,我无法可靠地重现我试图解决的问题。我只打算设置$delete,因为不管怎样,Laravel 都会将一个抛出异常的作业返回到队列中。

于 2014-05-12T02:03:46.990 回答