У меня есть система, выполняющая несколько видов заданий (очереди Laravel 5.1). Я использую драйвер очереди базы данных.
Супервайзер проверяет 3 «экземпляра» queue:work
работают как демон все время.
ps aux | grep queue
подтверждает это — три процесса ждут работы.
Иногда я вижу несколько записей заданий (без задержки) в таблице базы данных, но всегда только одна из них имеет reserved
флаг установлен в 1.
Что я делаю неправильно?
Почему 3 рабочих демона не занимаются другими заданиями в очереди?
Как я могу сделать так, чтобы одновременно можно было выполнять более одной работы?
ОБНОВИТЬ:
Я написал задание, которое спит в течение 15 секунд, а затем отправляет три новых задания (того же класса).
Я запустил это на моем сервере разработки, и это сработало. Три работы были зарезервированы одновременно. Как только с одним из них разбираются — другой берется из очереди и резервируется. Поведение, которое можно ожидать.
Наконец я запустил ту же ситуацию на моем рабочем сервере, и она не сработала. Одна зарезервированная работа за раз, хотя среда похожа, три очереди: рабочие процессы и т. Д.
Затем я попросил супервизора перезапустить рабочих, и он тоже начал работать.
Итак: это работает таким образом. Проблема в том, что я не знаю, что могло быть причиной проблемы, которая у меня была, и когда это произошло? Как мне избежать этого и как мне узнать, все ли в порядке сейчас?
Задача ещё не решена.
Других решений пока нет …