Автоматическая обработка отправленных заданий из очереди - PullRequest
0 голосов
/ 26 мая 2020

Я хотел бы автоматически обрабатывать задания из очереди.

У меня есть эта команда:

dispatch($importUserJob);

Можно ли запускать эти задания автоматически или через несколько секунды?

1 Ответ

1 голос
/ 26 мая 2020

Когда Job является dispatch() 'ed, он настроен для обработки процессом, настроенным в config/queue.php:

return [
  'default' => env('QUEUE_CONNECTION', 'sync'),
  'connections' => [
    'sync' => [...],
    'database' => [...],
    'beanstalkd' => [...],
    'sqs' => [...],
    'redis' => [...]
  ]
];

По умолчанию это установлено на sync(), и задания обрабатываются автоматически при запуске. Во многих производственных средах для этого параметра установлено значение database, и используется таблица jobs (см. https://laravel.com/docs/7.x/queues#driver -prerequisites раздел базы данных).

Для обработки отправленного Job в очередь вам понадобится слушатель:

php artisan queue:work

Это фоновый процесс, который автоматически прослушивает dispatch() и, используя таблицу jobs, обрабатывает Job и это 'payload'. Доступно множество вариантов конфигурации, но все они работают одинаково.

Наконец, если вы хотите отложить обработку Job, используя параметр ->delay():

dispatch(new ExampleJob(...))->delay(now()->addMinutes(10));

Это установит столбец jobs.available_at на соответствующую отметку времени и отложит выполнение до тех пор, пока не будет достигнуто это время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...