Ответ
Yandex Message Queue (YMQ) — это управляемый облачный сервис от Yandex Cloud для обмена сообщениями между компонентами приложений и микросервисами. Он полностью совместим с API Amazon SQS, что упрощает миграцию и использование существующих инструментов.
Сервис позволяет надежно передавать сообщения, обеспечивая слабую связанность (decoupling) компонентов системы.
Ключевые особенности:
- Полная управляемость: Yandex Cloud берет на себя всю работу по настройке, масштабированию и обслуживанию инфраструктуры брокера.
- Совместимость с Amazon SQS API: Можно использовать те же SDK (например,
boto3для Python), что и для работы с AWS SQS. - Два типа очередей:
- Стандартные: Обеспечивают высокую пропускную способность и доставку сообщения как минимум один раз (at-least-once delivery). Порядок сообщений не гарантируется.
- FIFO (First-In-First-Out): Гарантируют строгий порядок обработки сообщений и доставку ровно один раз (exactly-once processing).
- Интеграция с экосистемой Yandex Cloud: Легко интегрируется с Yandex Cloud Functions, Yandex Compute Cloud и другими сервисами.
Пример отправки сообщения на Python с помощью boto3:
import boto3
# Создание сессии с указанием эндпоинта YMQ
session = boto3.session.Session(
aws_access_key_id="YOUR_ACCESS_KEY_ID",
aws_secret_access_key="YOUR_SECRET_ACCESS_KEY",
region_name="ru-central1"
)
# Инициализация клиента
ymq = session.client(
service_name='sqs',
endpoint_url='https://message-queue.api.cloud.yandex.net'
)
queue_url = 'URL_ВАШЕЙ_ОЧЕРЕДИ'
# Отправка сообщения
response = ymq.send_message(
QueueUrl=queue_url,
MessageBody='{"task": "process_order", "order_id": 123}'
)
print(f"Сообщение отправлено, MessageId: {response.get('MessageId')}")
YMQ является отличной альтернативой самостоятельному развертыванию RabbitMQ или Kafka, если проект находится в инфраструктуре Yandex Cloud.