Быстрый старт работы с RabbitMq


Создаем канал

Самое первое, что необходимо сделать, это реализовать сервис, который будет работать с конкретным каналом очередей.
  1. Создаем файл src/AppBundle/Service/jobChannelTest.php [посмотреть код]
  2. Регистрируем его как сервис (services.yml)
    # ....
        app.job.channel.test:
            class: AppBundle\Service\jobChannelTest
            public: true

Помещаем в нашу очередь задания

  • Получаем сервис управления очередью через контейнер
    $channelTest = $this->get('app.job.channel.test');
  • помещаем в очередь несколько заданий
    		$channelTest
    			->addJob(['key' => 'val'])   // перед сохранением массив будет австоматически конвертирован в JSON строку
    			->addJob('jobdelete')  // использем строку как кей для удлаения задания при обработке
    			->addJob('jobskip')    // использем строку как кей для пропуска задания при обработке
    			->addJob('jobcancel')  // использем строку как кей для остановки обработки
    		;

Реализуем чтение очереди

  • Создаем файл src/AppBundle/Command/listenerJobsTestCommand.php [посмотреть код]

    Это у нас консольная команда, которую можно выполнить как разово, так и поставить на постоянное выполнение в CRON с периодичностью запуска в минуту

  • Выполняем команду в консоли. Если все сделали верно, то ошибок не возникнет
    php bin/console mq.jobs:listener.test