РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1344 of 1361 menu

Метод run класса Worker

Метод run класса Worker запускает цикл обработки сообщений. Он извлекает сообщения из транспорта, передаёт их шине и выполняет зарегистрированные обработчики. Первым параметром можно передать массив опций, например sleep для задержки между итерациями или limit для ограничения количества обработанных сообщений. Метод возвращает целое число - количество обработанных сообщений.

Синтаксис

public function run(array $options = []): int

Пример

Давайте создадим воркер и запустим его с ограничением в 1 сообщение:

<?php namespace AppCommand; use SymfonyComponentConsoleCommandCommand; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentMessengerTransportTransportInterface; use SymfonyComponentMessengerWorker; class WorkerCommand extends Command { protected static $defaultName = 'app:worker'; public function __construct( private TransportInterface $transport ) { parent::__construct(); } protected function execute(InputInterface $input, OutputInterface $output): int { $worker = new Worker([$this->transport]); $res = $worker->run(['limit' => 1]); $output->writeln('Processed: ' . $res); return Command::SUCCESS; } } ?>

Результат выполнения команды php bin/console app:worker:

Processed: 1

Пример

Давайте запустим воркер с задержкой между итерациями в 1 секунду и остановим его через 5 сообщений:

<?php namespace AppCommand; use SymfonyComponentConsoleCommandCommand; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentMessengerTransportTransportInterface; use SymfonyComponentMessengerWorker; class WorkerCommand extends Command { protected static $defaultName = 'app:worker'; public function __construct( private TransportInterface $transport ) { parent::__construct(); } protected function execute(InputInterface $input, OutputInterface $output): int { $worker = new Worker([$this->transport]); $res = $worker->run([ 'sleep' => 1000000, 'limit' => 5, ]); $output->writeln('Processed: ' . $res); return Command::SUCCESS; } } ?>

Результат выполнения команды:

Processed: 5

Смотрите также

  • класс Worker,
    который управляет обработкой сообщений
  • метод stop,
    который останавливает воркер
  • метод getMetadata,
    который возвращает метаданные воркера
  • класс MessageBus,
    который передаёт сообщения в шину
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить