Yandex Message Queue
- Standard and FIFO queuesYandex Message Queue supports queues of two types: standard and FIFO (first in, first out) queues. Standard queues do not preserve message ordering, guarantee at-least-once delivery, and provide high throughput. FIFO queues do preserve message ordering and guarantee exactly-once delivery, but their throughput is limited to 30 messages per second.
- Compatibility with the Amazon SQS HTTP APIYou can use the same tools for working with Yandex Message Queue as for interacting with Amazon SQS: the HTTP API, CLI, and libraries for various programming languages. Yandex Message Queue can also be used in popular frameworks and libraries that support Amazon SQS: Laravel, Celery, JMS, and many others.
- Reliable storageMessages are stored as multiple copies in geographically distributed availability zones. This ensures reliable storage and low latency with write confirmations.
- Fast processingYandex Message Queue uses fast NVMe-enabled solid-state drives to store messages. This results in high performance and a fast response time, even when concurrently sending multiple messages.
Yandex Message Queue is convenient to use for communication between applications: you don’t need to develop your own protocol and handle recipient errors. By using a queue, you can send messages even when the recipient is temporarily unavailable.
It is easier to scale a system in which applications are standalone and communicate with each other using a message queue. The number of applications that send or handle messages can be changed without affecting the rest of the system.
Use of a message queue increases fault tolerance in case of failures of individual applications. If an application crashes when handling a message, the message is returned to the queue and can be read by another handler. However, such failures do not affect the performance of senders in any way. Also you can configure Dead Letter Queue (DLQ) — a queue, that messages unprocessed in normal queues can be redirected to.
With message queuing, you can move long-running tasks to separate applications and free up resources for new user requests faster.