Laravel 4.1.25 автоматически удаляет успешные задания?
Я использую Laravel 4.1.25 с iron-io/iron_mq 1.5.1, и это моя первая попытка очереди. Согласно документации ( http://laravel.com/docs/queues), когда вы закончите обработку задания, вы должны удалить его из очереди.
Тем не менее, во время моего тестирования я заметил, что Laravel вернет любое задание в очередь Iron.io, если оно выдает исключение (задокументированное поведение), но если задание завершается успешно без исключений, оно исчезает из очереди.
Это что-то особенное для Iron.io (с использованием очереди извлечения), и будет ли мне больно, если я запустлю $job->delete()
в конце, несмотря на то, что Laravel уже очищает обработанные задания?
1 ответ
Итак, немного покопавшись в исходном коде, я обнаружил, что если вы добавите public $delete = true;
в класс, который содержит ваши fire()
Метод, Laravel автоматически удалит выполненные задания. Это ссылка из Illuminate\Queue\Worker process()
где он проверяет $job->autoDelete()
после звонка $job->fire()
,
В моем случае это не было установлено, и я не смог надежно воспроизвести проблему, которую пытался исправить. Я согласен только на настройку $delete
, поскольку Laravel будет возвращать задание, вызывающее исключение, в очередь независимо.