Задания Lumen в очереди с драйверами базы данных не заполняют табличные задания
Я совершенно новый, используя laravel/lumen
Я создаю новый проект просвета несколько часов назад и пытаюсь отправить задание в очередь по умолчанию с помощью драйвера базы данных.
мой файл.env выглядит так
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=xxxx
CACHE_DRIVER=file
QUEUE_DRIVER=database
Следуя официальной странице Queues - Lumen, я создаю миграцию для создания заданий и таблиц fail_jobs.
Файлconfig/queue.php имеет конфигурацию по умолчанию
Проблема:
- перед запуском команды
php artisan queue:work
Я пытался отправить работу в очередь,Queue::push(new SendEmailJob)
но он запустился сразу, и я не запустил командуphp artisan queue:work
еще. Я проверяю базу данных и таблица заданий пуста. - Я запускаю команду
php artisan queue:work
сделать запрос к определенной конечной точке, поставить задание в очередь, используя одну из этой строкиQueue::push(new SendEmailJob)
или жеdispatch(new SendEmailJob())
Я не получил никаких ошибок, но очередь заданий все еще пуста
Что я делаю неправильно?
Зачем в очереди обрабатывать все задания, прежде чем запустить команду php artisan queue:work
?
заранее спасибо
3 ответа
- Вы можете отправить задание и запросить задержку до его выполнения:
$ this-> dispatch ((новый ProcessJob($id))->delay(10)); // 10 мс
- Убедитесь, что работник не работает:
ps aux | grep queue
Если так, убей это. Хотя лучше всего перезапустить работника после любого изменения кода:
php artisan queue: перезапустить
Для меня это было неправильное имя для переменной драйвера/соединения, поэтому она все еще использовалась.sync
вместоdatabase
. В это былоQUEUE_DRIVER
но вqueue.php
config, на него ссылались как
Переименуйте переменную в.env
кQUEUE_CONNECTION
должен решить проблему
APP.PHP
if(\Illuminate\Support\Facades\Schema::hasTable("jobs"))Queue::push(new ProcessCenterJob());