Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Message Queue
  • Начало работы
    • Быстрый старт
    • Поддерживаемые инструменты
    • Примеры кода
      • Python
      • Node.js
      • PHP
      • Celery
      • JMS
      • Laravel
      • Terraform
  • Пошаговые инструкции
    • Обзор
    • Создание новой очереди сообщений
    • Отправка сообщений
    • Прием и удаление сообщений
    • Удаление очереди сообщений
  • Концепции
    • Обзор
    • Очереди сообщений
    • Сообщения
    • Дедупликация
    • Таймаут видимости
    • Long Polling
    • Dead Letter Queue
    • Отложенная доставка сообщений в очереди
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Yandex Message Queue API
    • Обзор
    • Queue
      • CreateQueue
      • DeleteQueue
      • GetQueueAttributes
      • GetQueueUrl
      • ListQueues
      • PurgeQueue
      • SetQueueAttributes
    • Message
      • ChangeMessageVisibility
      • ChangeMessageVisibilityBatch
      • DeleteMessage
      • DeleteMessageBatch
      • ReceiveMessage
      • SendMessage
      • SendMessageBatch
    • Типы данных
      • BatchResultErrorEntry
      • ChangeMessageVisibilityBatchRequestEntry
      • ChangeMessageVisibilityBatchResultEntry
      • DeleteMessageBatchRequestEntry
      • DeleteMessageBatchResultEntry
      • Message
      • MessageAttributeValue
      • SendMessageBatchRequestEntry
      • SendMessageBatchResultEntry
    • Стандартные ошибки
  • Публичные материалы
  • Вопросы и ответы
  1. Начало работы
  2. Примеры кода
  3. PHP

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

  • Установка
  • Подготовка к работе
  • Пример

С помощью AWS SDK для PHP можно управлять очередями сообщений в Message Queue, отправлять и принимать сообщения.

Установка

Установите AWS SDK для PHP по инструкции на официальном сайте.

$ composer require aws/aws-sdk-php-resources

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

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

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

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

Пример

В этом примере:

  1. Устанавливается соединение с Message Queue.
  2. Создается очередь сообщений c именем ymq_php_sdk_example.
  3. В очередь передается сообщение с текстом Test message.
  4. Сообщение считывается из очереди и отображается в терминале.
  5. Удаляется созданная очередь сообщений.
<?php

require __DIR__ . '/vendor/autoload.php';

use Aws\Sqs\SqsClient;
use Aws\Exception\AwsException;

$ymq = new Aws\Sqs\SqsClient([
    'version' => 'latest',
    'region' => 'ru-central1',
    'endpoint' => 'https://message-queue.api.cloud.yandex.net',
]);

$result = $ymq->createQueue([
    'QueueName' => 'ymq_php_sdk_example',
]);

$queueUrl = $result["QueueUrl"];
print('Queue created, URL: ' . $queueUrl . PHP_EOL);

$result = $ymq->sendMessage([
    'QueueUrl' => $queueUrl,
    'MessageBody' => 'Test message',
]);

print("Message sent, ID: " . $result["MessageId"] . PHP_EOL);

$result = $ymq->receiveMessage([
    'QueueUrl' => $queueUrl,
    'WaitTimeSeconds' => 10,
]);

foreach ($result["Messages"] as $msg) {
    print('Message received:' . PHP_EOL);
    print('ID: ' . $msg['MessageId'] . PHP_EOL);
    print('Body: ' . $msg['Body'] . PHP_EOL);

    $ymq->deleteMessage([
        'QueueUrl' => $queueUrl,
        'ReceiptHandle' => $msg['ReceiptHandle'],
    ]);
}

$result = $ymq->deleteQueue([
    'QueueUrl' => $queueUrl,
]);

print('Queue deleted' . PHP_EOL);
В этой статье:
  • Установка
  • Подготовка к работе
  • Пример
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»