5.2 KiB
5.2 KiB
NGCloud SQS — Managed Message Queue Service
Совместимый с Amazon SQS сервис очередей сообщений на базе ElasticMQ.
Демо-стенд
| Web UI | https://sqs.kube5s.ru/ |
| SQS Endpoint | https://sqs.kube5s.ru/sqs/test001 |
| Access Key | SQSAK-test001-ae4dc8 |
| Secret Key | J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE |
| Region | us-east-1 (любая) |
AWS CLI
Самый простой способ работы — через стандартный AWS CLI.
export AWS_ACCESS_KEY_ID="SQSAK-test001-ae4dc8"
export AWS_SECRET_ACCESS_KEY="J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE"
export AWS_DEFAULT_REGION="us-east-1"
ENDPOINT="--endpoint-url https://sqs.kube5s.ru/sqs/test001"
Создать очередь
aws sqs create-queue --queue-name myqueue $ENDPOINT
Список очередей
aws sqs list-queues $ENDPOINT
Отправить сообщение
aws sqs send-message \
--queue-url https://sqs.kube5s.ru:443/sqs/test001/test001/myqueue \
--message-body "Hello from CLI!" \
$ENDPOINT
Получить сообщение
aws sqs receive-message \
--queue-url https://sqs.kube5s.ru:443/sqs/test001/test001/myqueue \
$ENDPOINT
Удалить очередь
aws sqs delete-queue \
--queue-url https://sqs.kube5s.ru:443/sqs/test001/test001/myqueue \
$ENDPOINT
Совет:
--endpoint-url— единственное отличие от работы с Amazon SQS. Весь остальной код без изменений.
curl
Создать очередь
curl -s -u "SQSAK-test001-ae4dc8:J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE" \
"https://sqs.kube5s.ru/sqs/test001?Action=CreateQueue&QueueName=myqueue&Version=2012-11-05"
Отправить сообщение
curl -s -u "SQSAK-test001-ae4dc8:J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE" \
"https://sqs.kube5s.ru/sqs/test001?Action=SendMessage&QueueUrl=https://sqs.kube5s.ru/sqs/test001/test001/myqueue&MessageBody=HelloWorld&Version=2012-11-05"
Получить сообщение
curl -s -u "SQSAK-test001-ae4dc8:J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE" \
"https://sqs.kube5s.ru/sqs/test001?Action=ReceiveMessage&QueueUrl=https://sqs.kube5s.ru/sqs/test001/test001/myqueue&Version=2012-11-05"
Python (boto3)
import boto3
sqs = boto3.client(
"sqs",
endpoint_url="https://sqs.kube5s.ru/sqs/test001",
region_name="us-east-1",
aws_access_key_id="SQSAK-test001-ae4dc8",
aws_secret_access_key="J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE",
)
# Создать очередь
queue = sqs.create_queue(QueueName="myqueue")
print(queue["QueueUrl"])
# Отправить сообщение
sqs.send_message(QueueUrl=queue["QueueUrl"], MessageBody="Hello from Python!")
# Получить сообщение
msgs = sqs.receive_message(QueueUrl=queue["QueueUrl"])
print(msgs["Messages"][0]["Body"])
Node.js (@aws-sdk/client-sqs)
const { SQSClient, CreateQueueCommand, SendMessageCommand, ReceiveMessageCommand } = require("@aws-sdk/client-sqs");
const sqs = new SQSClient({
endpoint: "https://sqs.kube5s.ru/sqs/test001",
region: "us-east-1",
credentials: {
accessKeyId: "SQSAK-test001-ae4dc8",
secretAccessKey: "J8mElXq8Nwww8iFRtGJCm8KfxM9XSTluTqS2A67xsEE",
},
});
const queue = await sqs.send(new CreateQueueCommand({ QueueName: "myqueue" }));
await sqs.send(new SendMessageCommand({ QueueUrl: queue.QueueUrl, MessageBody: "Hello!" }));
const res = await sqs.send(new ReceiveMessageCommand({ QueueUrl: queue.QueueUrl }));
console.log(res.Messages[0].Body);
Проверка работоспособности
В репозитории есть quick_test.sh — скрипт для быстрой проверки сервиса.
Требования: curl, bash.
bash quick_test.sh
Что проверяет:
- Создание очереди
- Очередь видна в списке
- Отправка сообщения
- Получение сообщения (тело совпадает)
- Удаление очереди
- Очередь исчезла из списка
Ожидаемый вывод:
=== SQS Quick Test ===
✅ Создание очереди
✅ Очередь в списке
✅ Отправка сообщения
✅ Получение сообщения
✅ Удаление очереди
✅ Очередь удалена из списка
Результат: 6 OK / 0 FAIL
Всё работает!
Особенности
- Полная совместимость с Amazon SQS API — AWS SDK и CLI работают без изменений, только endpoint меняется
- Физическая изоляция — каждый тенант получает отдельный pod, namespace, диск
- Persistence — данные сохраняются при перезапуске
- Web UI — визуальное управление очередями