Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Yii2 Queue Laravel Package

yiisoft/yii2-queue

Yii2 Queue runs tasks asynchronously via pluggable queue backends: DB, Redis, RabbitMQ/AMQP, Beanstalk, ActiveMQ, and Gearman. Define jobs as classes implementing JobInterface and push them to the queue for background processing.

View on GitHub
Deep Wiki
Context7

DB драйвер

DB дравер для хранения очереди заданий использует базу данных.

Пример настройки:

return [
    'bootstrap' => [
        'queue', // Компонент регистрирует свои консольные команды 
    ],
    'components' => [
        'db' => [
            'class' => \yii\db\Connection::class, 
            // ...
        ],
        'queue' => [
            'class' => \yii\queue\db\Queue::class,
            'db' => 'db', // Компонент подключения к БД или его конфиг
            'tableName' => '{{%queue}}', // Имя таблицы
            'channel' => 'default', // Выбранный для очереди канал
            'mutex' => \yii\mutex\MysqlMutex::class, // Мьютекс для синхронизации запросов
        ],
    ],
];

В базу данных нужно добавить таблицу. Схема, на примере MySQL:

CREATE TABLE `queue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `channel` varchar(255) NOT NULL,
  `job` blob NOT NULL,
  `pushed_at` int(11) NOT NULL,
  `ttr` int(11) NOT NULL,
  `delay` int(11) NOT NULL DEFAULT 0,
  `priority` int(11) unsigned NOT NULL DEFAULT 1024,
  `reserved_at` int(11) DEFAULT NULL,
  `attempt` int(11) DEFAULT NULL,
  `done_at` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `channel` (`channel`),
  KEY `reserved_at` (`reserved_at`),
  KEY `priority` (`priority`)
) ENGINE=InnoDB

Миграции смотрите в src/drivers/db/migrations.

Расширение предлагает использовать миграции с неймспейсами. Чтобы добавить их в ваше приложение отредактируйте консольный конфиг:

'controllerMap' => [
    // ...
    'migrate' => [
        'class' => 'yii\console\controllers\MigrateController',
        'migrationPath' => null,
        'migrationNamespaces' => [
            // ...
            'yii\queue\db\migrations',
        ],
    ],
],

Затем запустите команду:

yii migrate/up

Консоль

Для обработки очереди используются консольные команды.

yii queue/listen [timeout]

Команда listen запускает обработку очереди в режиме демона. Очередь опрашивается непрерывно. Если добавляются новые задания, то они сразу же извлекаются и выполняются. timeout - время ожидания в секундах перед следующим опросом очереди. Способ наиболее эфективен если запускать команду через supervisor или systemd.

yii queue/run

Команда run в цикле извлекает задания из очереди и выполняет их, пока очередь не опустеет, и завершает свою работу. Это способ подойдет для обработки очереди заданий через cron.

Для команд run и listen доступны следующие опции:

  • --verbose, -v: состояние обработки заданий выводится в консоль.
  • --isolate: каждое задание выполняется в отдельном дочернем процессе.
  • --color: подсветка вывода в режиме --verbose.
yii queue/info

Команда info выводит инофрмацию о состоянии очереди.

yii queue/clear

Команда clear делает полную очистку очереди.

yii queue/remove [id]

Команда remove удаляет задание из очереди.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope