shared-SQS — AWS SQS Compatible Message Queue

Совместимый с Amazon SQS сервис очередей сообщений с поддержкой изолированных тенантов.

Сервис предназначен для работы через стандартные AWS SDK и AWS CLI: в обычном клиентском коде меняется только endpoint.

Демо-стенд

Web UI https://qu.kube5s.ru/ui/
SQS Endpoint https://qu.kube5s.ru
Region us-east-1
Demo Access Key SSAK-demo-shared-sqs
Demo Secret Key demo-secret-key-shared-sqs-ngcloud-2026

Demo credentials предназначены для ознакомительного доступа. Для собственных write-сценариев используйте tenant credentials своего окружения.

Что поддерживается

shared-SQS покрывает 17 SQS-операций:

  • CreateQueue
  • DeleteQueue
  • GetQueueAttributes
  • GetQueueUrl
  • ListQueues
  • PurgeQueue
  • SetQueueAttributes
  • TagQueue
  • UntagQueue
  • ListQueueTags
  • SendMessage
  • SendMessageBatch
  • ReceiveMessage
  • DeleteMessage
  • DeleteMessageBatch
  • ChangeMessageVisibility
  • ChangeMessageVisibilityBatch

Где взять ключи

Есть два варианта:

1. Ознакомительный доступ

Для простого знакомства можно использовать demo credentials из блока выше:

export AWS_ACCESS_KEY_ID="SSAK-demo-shared-sqs"
export AWS_SECRET_ACCESS_KEY="demo-secret-key-shared-sqs-ngcloud-2026"
export AWS_DEFAULT_REGION="us-east-1"
ENDPOINT="--endpoint-url https://qu.kube5s.ru"

2. Собственные tenant credentials

Если нужен полноценный доступ для своих очередей и сообщений, используйте credentials своего тенанта. Это обычная пара Access Key / Secret Key, выданная для вашего tenant.

Примеры ниже работают в обоих режимах: с demo credentials и с собственными tenant credentials.

Где взять ключи

Есть два варианта:

1. Ознакомительный доступ

Для простого знакомства можно использовать demo credentials из блока выше:

export AWS_ACCESS_KEY_ID="SSAK-demo-shared-sqs"
export AWS_SECRET_ACCESS_KEY="demo-secret-key-shared-sqs-ngcloud-2026"
export AWS_DEFAULT_REGION="us-east-1"
ENDPOINT="--endpoint-url https://qu.kube5s.ru"

2. Собственные tenant credentials

Если нужен полноценный доступ для своих очередей и сообщений, используйте credentials своего тенанта. Это обычная пара Access Key / Secret Key, выданная для вашего tenant.

Примеры ниже работают в обоих режимах: с demo credentials и с собственными tenant credentials.

Быстрый старт через AWS CLI

export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_KEY"
export AWS_DEFAULT_REGION="us-east-1"
ENDPOINT="--endpoint-url https://qu.kube5s.ru"

Создать очередь

aws sqs create-queue --queue-name demo-queue $ENDPOINT

Получить URL очереди

aws sqs get-queue-url --queue-name demo-queue $ENDPOINT

Отправить сообщение

QUEUE_URL=$(aws sqs get-queue-url --queue-name demo-queue $ENDPOINT --query QueueUrl --output text)
aws sqs send-message --queue-url "$QUEUE_URL" --message-body "Hello from shared-SQS" $ENDPOINT

Получить сообщение

aws sqs receive-message --queue-url "$QUEUE_URL" --wait-time-seconds 5 $ENDPOINT

Удалить очередь

aws sqs delete-queue --queue-url "$QUEUE_URL" $ENDPOINT

Python (boto3)

import boto3

sqs = boto3.client(
    "sqs",
    endpoint_url="https://qu.kube5s.ru",
    region_name="us-east-1",
    aws_access_key_id="YOUR_ACCESS_KEY",
    aws_secret_access_key="YOUR_SECRET_KEY",
)

queue = sqs.create_queue(QueueName="demo-queue")
queue_url = queue["QueueUrl"]

sqs.send_message(QueueUrl=queue_url, MessageBody="Hello from Python")
messages = sqs.receive_message(QueueUrl=queue_url, WaitTimeSeconds=5)
print(messages)

Node.js (@aws-sdk/client-sqs)

const {
  SQSClient,
  CreateQueueCommand,
  SendMessageCommand,
  ReceiveMessageCommand,
} = require("@aws-sdk/client-sqs");

const sqs = new SQSClient({
  endpoint: "https://qu.kube5s.ru",
  region: "us-east-1",
  credentials: {
    accessKeyId: "YOUR_ACCESS_KEY",
    secretAccessKey: "YOUR_SECRET_KEY",
  },
});

const queue = await sqs.send(new CreateQueueCommand({ QueueName: "demo-queue" }));
await sqs.send(new SendMessageCommand({ QueueUrl: queue.QueueUrl, MessageBody: "Hello" }));
const result = await sqs.send(new ReceiveMessageCommand({ QueueUrl: queue.QueueUrl, WaitTimeSeconds: 5 }));
console.log(result.Messages);

Тесты

quick_test.sh

Короткий smoke test основных операций:

AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... bash quick_test.sh

Проверяет базовый lifecycle очереди и сообщения:

  • CreateQueue
  • ListQueues
  • GetQueueUrl
  • SendMessage
  • ReceiveMessage
  • DeleteMessage
  • DeleteQueue

hardcore_test.sh

Расширенный compatibility test:

AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... bash hardcore_test.sh

Покрывает все 17 SQS-операций, включая:

  • queue attributes
  • tags
  • batch операции
  • visibility timeout
  • purge
  • queue lifecycle

Сравнительные тесты

Краткий пользовательский summary лежит в файле BENCHMARK-COMPARISON.md.

Ключевой вывод: shared-SQS показывает конкурентоспособные результаты относительно Yandex MQ и покрывает полный набор заявленных пользовательских сценариев.

S
Description
No description provided
Readme
140 KiB
Languages
Shell 94.5%
Smarty 5.5%