Драйвер для AWS SQS

Этот драйвер для хранения очереди заданий использует 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 делает полную очистку очереди.