Этот драйвер для хранения очереди заданий использует AWS SQS.
В приложении должно быть установлено расширение aws/aws-sdk-php.
Пример настройки:
return [
'bootstrap' => [
'queue', // The component registers own console commands
],
'components' => [
'queue' => [
'class' => \yii\queue\sqs\Queue::class,
'url' => '<sqs url>',
'key' => '<key>',
'secret' => '<secret>',
'region' => '<region>',
],
],
];
Для обработки очереди используются консольные команды.
yii queue/listen [timeout]
Команда listen запускает обработку очереди в режиме демона. Очередь опрашивается непрерывно.
Если добавляются новые задания, то они сразу же извлекаются и выполняются. timeout - время
ожидания задания из очереди перед следующей итерацией. listen использует функцию "Long Polling",
которая удерживает соединение с очередью и прослушивает ее на появление новых сообщений.
Важно! Параметрtimeout для драйвера AWS SQS должен быть в интервале от 0 до 20 секунд.
Способ наиболее эфективен если запускать команду через supervisor или systemd.
yii queue/run
Команда run в цикле извлекает задания из очереди и выполняет их, пока очередь не опустеет, и
завершает свою работу. Это способ подойдет для обработки очереди заданий через
cron.
Для команд run и listen доступны следующие опции:
--verbose, -v: состояние обработки заданий выводится в консоль.--isolate: каждое задание выполняется в отдельном дочернем процессе.--color: подсветка вывода в режиме --verbose.yii queue/clear
Команда clear делает полную очистку очереди.