Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Message Queue
    • Быстрый старт
    • Поддерживаемые инструменты
      • Python
      • Node.js
      • PHP
      • Celery
      • JMS
      • Laravel
      • Symfony
      • Terraform
      • Golang
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Публичные материалы
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Установка
  • Подготовка к работе
  • Инструкции
  1. Начало работы
  2. Примеры кода
  3. Laravel

Пример использования Yandex Message Queue на Laravel

Статья создана
Yandex Cloud
Обновлена 7 марта 2025 г.
  • Установка
  • Подготовка к работе
  • Инструкции

Для работы с очередями PHP-фреймворк Laravel предоставляет примитив Queue. В качестве брокера сообщений можно использовать Message Queue.

УстановкаУстановка

Установите Laravel по инструкции на официальном сайте фреймворка.

Подготовка к работеПодготовка к работе

  1. Создайте сервисный аккаунт.
  2. Назначьте роль editor сервисному аккаунту.
  3. Создайте статический ключ доступа.

Задайте переменные окружения:

export AWS_ACCESS_KEY_ID="<идентификатор_ключа_доступа>"
export AWS_SECRET_ACCESS_KEY="<секретный_ключ>"

Создайте очередь в сервисе Message Queue и скопируйте ее URL.

ИнструкцииИнструкции

В этом примере создается демонстрационная задача (Job), которая суммирует два числа, и команда (Command), которая ставит задачу в очередь Message Queue.

Чтобы использовать Message Queue с Laravel, выполните следующие инструкции.

  1. Создайте тестовый проект mq_example:

    composer create-project --prefer-dist laravel/laravel mq_example
    
  2. Создайте задачу Add:

    php artisan make:job Add
    
  3. Откройте файл /app/Jobs/Add.php и приведите его к виду:

    <?php
    
    namespace App\Jobs;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Illuminate\Foundation\Bus\Dispatchable;
    
    class Add implements ShouldQueue
    {
        use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
        private $addend1 = null;
        private $addend2 = null;
    
        /**
         * Create a new job instance.
         *
         * @return void
         */
        public function __construct($addend1, $addend2)
        {
            $this->addend1 = $addend1;
            $this->addend2 = $addend2;
        }
    
        /**
         * Execute the job.
         */
        public function handle()
        {
            $result = $this->addend1 + $this->addend2;
            print("{$this->addend1} + {$this->addend2} = $result\n");
        }
    }
    
  4. Создайте новую команду ScheduleAdd:

    php artisan make:command ScheduleAdd
    
  5. Откройте файл app/Console/Commands/ScheduleAdd.php и приведите его к следующему виду:

    <?php
    
    namespace App\Console\Commands;
    
    use App\Jobs\Add;
    
    use Illuminate\Console\Command;
    
    class ScheduleAdd extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature = 'sample:schedule-add';
    
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'Command description';
    
        /**
         * Create a new command instance.
         *
         * @return void
         */
        public function __construct()
        {
            parent::__construct();
        }
    
        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle()
        {
            Add::dispatch(2, 3);
        }
    }
    
  6. Откройте файл config/queue.php и приведите строку 'default' => env('QUEUE_CONNECTION', 'sync'), к виду 'default' => 'sqs',.

  7. Заполните параметры в блоке sqs.

    Чтобы получить значения для параметров prefix и queue, разделите URL вашей очереди на две части: префиксом будет служить https://message-queue.api.cloud.yandex.net/, а параметром очереди b1g8ad42m6he********/dj6000000000******** без / в начале.

    'sqs' => [
        'driver' => 'sqs',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'prefix' => env('SQS_PREFIX', 'https://message-queue.api.cloud.yandex.net/'),
        'queue' => env('SQS_QUEUE', 'b1g8ad42m6he********/dj6000000000********/laravel-test'),
        'region' => env('AWS_DEFAULT_REGION', 'ru-central1'),
    ],
    
  8. Добавьте в зависимости проекта пакет aws/aws-sdk-php:

    composer require aws/aws-sdk-php
    
  9. Обновите конфигурацию Composer:

    composer update
    
  10. Выполните команду:

    php artisan sample:schedule-add
    
  11. Выполните команду:

    php artisan queue:work
    

Была ли статья полезна?

Предыдущая
JMS
Следующая
Symfony
Проект Яндекса
© 2025 ООО «Яндекс.Облако»