Пример использования Yandex Message Queue на PHP
С помощью AsyncAws
Установка
Установите библиотеку AsyncAws:
composer require async-aws/sqs ^1.9
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте роль editor сервисному аккаунту.
- Создайте статический ключ доступа.
Задайте переменные окружения:
export AWS_ACCESS_KEY_ID="<идентификатор_ключа_доступа>"
export AWS_SECRET_ACCESS_KEY="<секретный_ключ>"
Пример
В этом примере:
- Устанавливается соединение с Message Queue.
- Создается очередь сообщений с именем
mq_php_sdk_example
. - В очередь передается сообщение с текстом
Test message
. - Сообщение считывается из очереди и отображается в терминале.
- Удаляется созданная очередь сообщений.
<?php
use AsyncAws\Sqs\SqsClient;
require __DIR__ . '/vendor/autoload.php';
$mq = new SqsClient([
'region' => 'ru-central1',
'endpoint' => 'https://message-queue.api.cloud.yandex.net',
]);
$result = $mq->createQueue([
'QueueName' => 'mq_php_sdk_example',
]);
$queueUrl = $result->getQueueUrl();
print('Queue created, URL: ' . $queueUrl . PHP_EOL);
$result = $mq->sendMessage([
'QueueUrl' => $queueUrl,
'MessageBody' => 'Test message',
]);
print("Message sent, ID: " . $result->getMessageId() . PHP_EOL);
$result = $mq->receiveMessage([
'QueueUrl' => $queueUrl,
'WaitTimeSeconds' => 10,
]);
foreach ($result->getMessages() as $msg) {
print('Message received:' . PHP_EOL);
print('ID: ' . $msg->getMessageId() . PHP_EOL);
print('Body: ' . $msg->getBody() . PHP_EOL);
$mq->deleteMessage([
'QueueUrl' => $queueUrl,
'ReceiptHandle' => $msg->getReceiptHandle(),
]);
}
$result = $mq->deleteQueue([
'QueueUrl' => $queueUrl,
]);
print('Queue deleted' . PHP_EOL);