Files
shared-SQS/README.md
T

191 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 из блока выше:
```bash
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
```bash
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"
```
### Создать очередь
```bash
aws sqs create-queue --queue-name demo-queue $ENDPOINT
```
### Получить URL очереди
```bash
aws sqs get-queue-url --queue-name demo-queue $ENDPOINT
```
### Отправить сообщение
```bash
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
```
### Получить сообщение
```bash
aws sqs receive-message --queue-url "$QUEUE_URL" --wait-time-seconds 5 $ENDPOINT
```
### Удалить очередь
```bash
aws sqs delete-queue --queue-url "$QUEUE_URL" $ENDPOINT
```
## Python (boto3)
```python
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)
```javascript
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 основных операций:
```bash
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:
```bash
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 и покрывает полный набор заявленных пользовательских сценариев.