2016-09-27 2 views
0

Я немного запутался с laravel --queue и reserved столбец (используя mysql).
1- в Laravel документации заявил:Приоритет очереди Laravel и зарезервированный

php artisan queue:listen --queue=high,low 

В этом примере задания на высокой очереди всегда будут обрабатываться , прежде чем перейти на работу с низкой очереди.

позволяет сказать, что у меня есть работа high и несколько работ low. задание high уволить и из-за проблемы вернуться в очередь, чтобы снова выстрелить через 60 секунд. что происходит в этот период? делает работу low начать работу или нет?

2- Делает queue:work --daemon работает как queue:listen? Я имею в виду, обрабатывает ли он все рабочие места, как то, что делают listen?

3 что такое reserved column для?

ответ

0
  1. Я могу только догадываться здесь, но я предполагаю, что high работа будет повторена перед тем low из них. Вот почему вы должны использовать флаг tries=3(or whatever) при запуске рабочего или добавить public $tries = 5; в класс Job. Или вы можете воспользоваться признаком InteractsWithQueue для более тонкого контроля.

  2. Я верю, позже версии Laravel запускаются в режиме демона по умолчанию, когда вы используете команду queue:work. Рабочие процессы Daemon долговечны и работают быстрее, так как им не нужно перезапускать всю структуру для каждой новой работы. Команда queue:listen даже не задокументирована в последних (5.4) версиях. Работник, порожденный этой командой, перезапускается перед каждым опросом о работе. Лично я все еще использую это, поскольку у меня возникают проблемы с памятью при запуске рабочих демона.

  3. Как я понимаю, этот столбец - это способ отметить, когда конкретное задание было запущено. В файле конфигурации queue.php вы можете указать, когда соединение должно повторить задание. Я думаю, что соединение решает, следует ли повторить работу, посмотрев на столбец reserved.