我在运行长时间队列工作时遇到问题,我目前正在使用Laravel 5.0。我曾经在数据库上对作业进行排队并且没有问题,但是我需要从DB移动它,所以我去了rabbitmq,所以我正在集成这个包: https://github.com/vyuldashev/laravel-queue-rabbitmq/tree/v5.0
短时间工作,少于3或4分钟的工作,一切都很顺利,但我正在尝试为超过10分钟的工作运行一个队列监听器,事情是他们没有得到承认,他们保持未被包装,并在16.6分钟之后完全 - 默认ttl-;他们搬到下一份工作,仍然没有采取行动。如果这个过程耗时太长,我有时会断管或连接。
我认为问题出在工作者本身,而不是我正在使用的包中,这是我试图应用的队列监听器的两个例子,你能建议如何以更好的方式使用它们或者我可以选择使用哪些选项:
答案 0 :(得分:1)
您可以像这样设置每个作业的$timeout
:
namespace App\Jobs;
class LongProcessJob implements ShouldQueue
{
/**
* The number of seconds the job can run before timing out.
* @var int
*/
public $timeout = 120;
}
有关更多详细信息,请参见Laravel Queues。