---
metadata:
  - name: generator
    content: Diplodoc Platform v5.56.0
alternate:
  - https://ydb.tech/docs/en/reference/sqs-api/index.md?version=main
  - https://ydb.tech/docs/ru/reference/sqs-api/index.md?version=main
  - href: ru/reference/sqs-api/index.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/reference/sqs-api/index.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Amazon SQS API

YDB поддерживает работу с [топиками](https://ydb.tech/docs/ru/concepts/datamodel/topic.md?version=main) по протоколу [Amazon SQS](https://en.wikipedia.org/wiki/Amazon_Simple_Queue_Service).

<!-- source: ru/reference/sqs-api/_includes/limitations.md -->
{% note info %}

Работа с топиками по Amazon SQS-протоколу поддерживается только для [Amazon JSON protocol](https://docs.amazonaws.cn/en_us/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-json-faqs.html).

{% endnote %}
<!-- endsource: ru/reference/sqs-api/_includes/limitations.md -->

С одним топиком работа может вестись одновременно по нескольким протоколам. Например, запись может осуществляться с использованием Topic API, а чтение — с использованием Amazon SQS API, и наоборот.

При создании топика командой `CreateQueue` Amazon SQS API топик создаётся с включённым [автопартиционированием](https://ydb.tech/docs/ru/concepts/datamodel/topic.md?version=main#autopartitioning_modes): с одной партицией и автоматической возможностью увеличения до 10 активных партиций. Параметры автопартиционирования можно изменить через [YQL](https://ydb.tech/docs/ru/yql/reference/syntax/alter-topic.md?version=main) или [YDB CLI](https://ydb.tech/docs/ru/reference/ydb-cli/topic-alter.md?version=main).

## Чтение по Amazon SQS API

Для чтения по Amazon SQS API используется [разделяемый (общий) читатель](https://ydb.tech/docs/ru/concepts/datamodel/topic.md?version=main#shared-consumer), который должен быть создан на топике до начала чтения по Amazon SQS-протоколу. Если топик создаётся командой `CreateQueue` Amazon SQS API, автоматически создаётся разделяемый (общий) читатель с именем `ydb-sqs-consumer`.

Сообщения, записанные через Topic API, могут быть сжаты алгоритмами [gzip](https://en.wikipedia.org/wiki/Gzip), [lzop](https://en.wikipedia.org/wiki/Lzop) или [zstd](https://en.wikipedia.org/wiki/Zstd). При чтении по Amazon SQS-протоколу сервер не разжимает их, а передаёт в виде base64: читатель должен выполнить base64-декодирование, а затем разжатие.

Сообщения, записанные через Topic API без сжатия, могут содержать бинарные данные. При чтении по Amazon SQS-протоколу сервер также кодирует их в base64 — читатель должен выполнить base64-декодирование.

Чтобы читатель мог определить алгоритм сжатия, вместе с каждым сообщением отдаётся атрибут `BodyEncoding`. Если атрибут `BodyEncoding` отсутствует, разжимать сообщение не требуется. Возможные значения атрибута: `gzip`, `lzop`, `zstd` или `base64`.

Пример сообщения, содержимое которого сжато:

```json
{
    "Messages": [
        {
            "MessageId": "D523647F-5E89-560B-B1D0-152201831603",
            "ReceiptHandle": "CAAQAA==",
            "MD5OfBody": "d620a162c499920254054f78eac4feed",
            "Body": "KLUv/QBYaQAAeWRiIHdyaXRlZCAyCg==",
            "Attributes": {
                "SentTimestamp": "1780660726888",
                "BodyEncoding": "zstd"
            }
        }
    ]
}
```

## Запись по Amazon SQS API

При записи в топик по Amazon SQS-протоколу сообщения равномерно распределяются по партициям. При этом гарантируется, что все сообщения с одинаковым `MessageGroupId` попадут в одну партицию.

Для записи по Amazon SQS-протоколу поддержана дедубликация сообщений по `DeduplicationMessageId`, а если `DeduplicationMessageId` не передан — по содержимому сообщения. Включить дедубликацию по содержимому можно командами `CreateQueue` и `SetQueueAttributes`, указав параметр `ContentBasedDeduplication`.

Дедубликация по содержимому реализована на окне в 5 минут: сообщение с повторяющимся `DeduplicationMessageId` может быть повторно записано через 5 минут или более.

Есть ограничение на количество сообщений, которые можно записать в партицию топика с включённой дедубликацией по содержимому, — 500 сообщений в секунду. Если требуется записывать в топик больше сообщений, следует увеличить количество партиций. Ограничение на топик вычисляется как 500 сообщений/сек/партиция × количество партиций. Например, чтобы записывать 10 тыс. сообщений в секунду, создайте топик с 20 партициями.

## Разделы документации

- [Аутентификация](https://ydb.tech/docs/ru/reference/sqs-api/auth.md?version=main)
- [Примеры работы с топиком через Amazon SQS API](https://ydb.tech/docs/ru/reference/sqs-api/examples.md?version=main)
- [Создание очереди с помощью YQL](https://ydb.tech/docs/ru/yql/reference/syntax/alter-topic.md?version=main#add-consumer)
- [Разделяемый читатель топика: устройство и ограничения](https://ydb.tech/docs/ru/dev/shared-consumer-internals.md?version=main)
