2026-04-09 08:55:02 +03:00
2026-04-09 08:55:02 +03:00

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

Что проверяет:

  1. Создание очереди
  2. Очередь видна в списке
  3. Отправка сообщения
  4. Получение сообщения (тело совпадает)
  5. Удаление очереди
  6. Очередь исчезла из списка

Ожидаемый вывод:

=== SQS Quick Test ===

  ✅ Создание очереди
  ✅ Очередь в списке
  ✅ Отправка сообщения
  ✅ Получение сообщения
  ✅ Удаление очереди
  ✅ Очередь удалена из списка

Результат: 6 OK / 0 FAIL
Всё работает!

Особенности

  • Полная совместимость с Amazon SQS API — AWS SDK и CLI работают без изменений, только endpoint меняется
  • Физическая изоляция — каждый тенант получает отдельный pod, namespace, диск
  • Persistence — данные сохраняются при перезапуске
  • Web UI — визуальное управление очередями
S
Description
No description provided
Readme
44 KiB
Languages
Shell 100%