Задания 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 имеет конфигурацию по умолчанию

Проблема:

  1. перед запуском команды php artisan queue:work Я пытался отправить работу в очередь, Queue::push(new SendEmailJob) но он запустился сразу, и я не запустил команду php artisan queue:work еще. Я проверяю базу данных и таблица заданий пуста.
  2. Я запускаю команду php artisan queue:work сделать запрос к определенной конечной точке, поставить задание в очередь, используя одну из этой строки Queue::push(new SendEmailJob) или же dispatch(new SendEmailJob())Я не получил никаких ошибок, но очередь заданий все еще пуста

Что я делаю неправильно?

Зачем в очереди обрабатывать все задания, прежде чем запустить команду php artisan queue:work?

заранее спасибо

3 ответа

  1. Вы можете отправить задание и запросить задержку до его выполнения:

$ this-> dispatch ((новый ProcessJob($id))->delay(10)); // 10 мс

  1. Убедитесь, что работник не работает:

ps aux | grep queue

Если так, убей это. Хотя лучше всего перезапустить работника после любого изменения кода:

php artisan queue: перезапустить

Для меня это было неправильное имя для переменной драйвера/соединения, поэтому она все еще использовалась.syncвместоdatabase. В это былоQUEUE_DRIVERно вqueue.phpconfig, на него ссылались как

Переименуйте переменную в.envкQUEUE_CONNECTIONдолжен решить проблему

APP.PHP

if(\Illuminate\Support\Facades\Schema::hasTable("jobs"))Queue::push(new ProcessCenterJob());

Другие вопросы по тегам