Создание новой очереди сообщений
Очереди сообщений Message Queue позволяют передавать сообщения между компонентами распределенных приложений. Передавать сообщения в очереди можно с помощью API или других поддерживаемых инструментов.
Чтобы создать новую очередь сообщений:
- В консоли управления
выберите каталог, в котором будет создана очередь. - Выберите сервис Message Queue.
- Нажмите кнопку Создать очередь.
- В блоке Базовые параметры заполните поля:
-
Имя — укажите имя очереди.
Имя может содержать строчные буквы латинского алфавита, цифры, дефисы и подчеркивания. Имя очереди FIFO должно заканчиваться суффиксом
.fifo
. Длина имени не должна превышать 80 символов. -
Тип — выберите тип очереди
Стандартная
илиFIFO
. -
Стандартный таймаут видимости — укажите стандартный таймаут видимости, который будет применяться к сообщениям в очереди после чтения получателем.
-
Срок хранения сообщений — укажите максимальный срок хранения сообщений в очереди.
-
Максимальный размер сообщения — укажите максимальный размер сообщения.
-
Задержка доставки — укажите время, в течение которого новое сообщение нельзя получить из очереди.
-
Время ожидания при получении сообщения — укажите время ожидания при получении сообщения.
-
- Чтобы перенаправлять недоставленные сообщения в очередь недоставленных сообщений (DLQ), в блоке Настройки очередей недоставленных сообщений:
- Включите опцию Перенаправлять недоставленные сообщения.
- Укажите Очередь недоставленных сообщений.
- Задайте Максимальное количество попыток чтения.
- Нажмите кнопку Создать.
-
Установите и настройте AWS CLI.
-
Выполните в терминале команду:
aws sqs create-queue \ --queue-name <имя_очереди> \ --endpoint <эндпоинт>
Где:
--queue-name
— имя создаваемой очереди, напримерsample-queue
.--endpoint
— эндпоинт в значенииhttps://message-queue.api.cloud.yandex.net/
.
Результат:
{ "QueueUrl": "https://message-queue.api.cloud.yandex.net/aoeaql9r10cd********/000000000000********/sample-queue" }
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать очередь сообщений:
-
Опишите в конфигурационном файле параметры очереди, которую необходимо создать:
Пример конфигурационного файла для стандартной очереди:
provider "yandex" { token = "<OAuth_или_статический_ключ_сервисного_аккаунта>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } resource "yandex_message_queue" "example_queue" { name = "mq-terraform-example" visibility_timeout_seconds = 600 receive_wait_time_seconds = 20 message_retention_seconds = 1209600 access_key = "<идентификатор_статического_ключа_доступа>" secret_key = "<секретная_часть_статического_ключа_доступа>" }
Пример конфигурационного файла для очереди FIFO:
provider "yandex" { token = "<OAuth_или_статический_ключ_сервисного_аккаунта>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } resource "yandex_message_queue" "example-fifo-queue" { name = "mq-terraform-example.fifo" visibility_timeout_seconds = 600 receive_wait_time_seconds = 20 message_retention_seconds = 1209600 fifo_queue = true access_key = "<идентификатор_статического_ключа_доступа>" secret_key = "<секретная_часть_статического_ключа_доступа>" }
Пример конфигурационного файла для очереди с политикой перенаправления недоставленных сообщений в DLQ с именем
mq_terraform_deadletter_example
:provider "yandex" { token = "<OAuth_или_статический_ключ_сервисного_аккаунта>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } resource "yandex_message_queue" "example_fifo_queue" { name = "mq-terraform-example" visibility_timeout_seconds = 600 receive_wait_time_seconds = 20 message_retention_seconds = 1209600 redrive_policy = jsonencode({ deadLetterTargetArn = yandex_message_queue.example_deadletter_queue.arn maxReceiveCount = 3 }) access_key = "<идентификатор_статического_ключа_доступа>" secret_key = "<секретная_часть_статического_ключа_доступа>" } resource "yandex_message_queue" "example_deadletter_queue" { name = "mq_terraform_deadletter_example" access_key = "<идентификатор_статического_ключа_доступа>" secret_key = "<секретная_часть_статического_ключа_доступа>" }
Где:
name
— имя очереди.visibility_timeout_seconds
— таймаут видимости.receive_wait_time_seconds
— время ожидания поступления сообщений в очередь при использовании Long Polling. Возможные значения: от 0 до 20 секунд. Значение по умолчанию — 0 секунд.message_retention_seconds
— срок хранения сообщений в очереди в секундах.redrive_policy
— политика перенаправления сообщений в очередь Dead Letter Queue.deadLetterTargetArn
— ARN очереди DLQ, куда будут перенаправляться сообщения.maxReceiveCount
— количество попыток чтения сообщения из очереди до отправки его в DLQ.
fifo_queue
— указание, что создается очередь FIFO.content_based_deduplication
— включение дедупликации по содержимому в очередях FIFO.access_key
— идентификатор статического ключа доступа сервисного аккаунта для очереди. Если идентификатор не задан в конфигурации очереди, будет использоваться идентификатор из конфигурации провайдера.secret_key
— секретная часть статического ключа доступа. Если секретный ключ не задан в конфигурации очереди, будет использоваться ключ из конфигурации провайдера.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
- В командной строке перейдите в папку, где вы создали конфигурационный файл.
- Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Разверните облачные ресурсы.
- Если в конфигурации нет ошибок, выполните команду:
terraform apply
- Подтвердите создание ресурсов.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. Удалить созданные ресурсы можно командойterraform destroy
. - Если в конфигурации нет ошибок, выполните команду:
При достижении лимита на максимальное количество очередей, возникает ошибка Cannot create queue: Too many queues
. Для увеличения лимита обратитесь в техническую поддержку