Пример использования Yandex Message Queue на PHP
С помощью AWS SDK для PHP можно управлять очередями сообщений в Message Queue, отправлять и принимать сообщения.
Установка
Установите AWS SDK для PHP по инструкции на официальном сайте.
$ composer require aws/aws-sdk-php-resources
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте роль editor сервисному аккаунту.
- Создайте статический ключ доступа.
Задайте переменные окружения:
$ export AWS_ACCESS_KEY_ID="<идентификатор ключа доступа>"
$ export AWS_SECRET_ACCESS_KEY="<секретный ключ>"
Пример
В этом примере:
- Устанавливается соединение с Message Queue.
- Создается очередь сообщений c именем
ymq_php_sdk_example
. - В очередь передается сообщение с текстом
Test message
. - Сообщение считывается из очереди и отображается в терминале.
- Удаляется созданная очередь сообщений.
<?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);