Еще один полезный сервис Яндекс.Облака, который может использоваться для связи различных сервисов между собой - это так называемый Message Queue или Очередь сообщений.

С помощью этого сервиса вы можете значительно упростить себе жизнь для решения каких-то сложных задач, о которых мы сейчас и поговорим.

Для начала давайте разберемся, что такое очередь сообщений. 

Сообщение - это HTTP-запрос с данными (текст или json), который передается на удаленный сервер. Сообщение - это просто передача какого-то набора данных и этот набор данных передается на какой-то удаленный сервер. 

См. видео, чтобы увидеть схему.

У нас есть отправители сообщений (Senders, Producers) и есть получатели (Receivers, Consumers). Это две программы, которые отправляю и получают данные. 

Мы можем отправлять некий набор данных и этот набор данных поступает в некую очередь сообщений. Эти сообщения выстраиваются в очередь и отправляются получателям.

Вопрос, который возникает, зачем нам промежуточное звено в виде очереди, когда мы можем передать данные напрямую от отправителя, к получателю? 

Очереди сообщений предоставляют многие компании, которые предоставляют услуги к Serverless технологиям. Это Яндекс.Облако, Google облако, амазон и др.

Первая причина, для чего нужна очередь сообщений - это независимость систем. Отправители работают отдельно от получателей. Программа отправителя сообщений может на работать на одном языке программирования, а получателя на другом.

Вторая идея независимости в том, что задачи, которые стоят перед отправителями и получателями разные. Отправитель может отправить сообщение и не ждать пока получатель его каким-то образом обработает. 

В этом вся идея, что отправителю не нужно ждать результатов вычислений от получателя. Благодаря этому мы можем выполнять длинные задачи, которые требуют больших вычислительных мощностей и времени на их вычисление.

Важно, что получатель, после обработки сообщения, должен удалить его из очереди.

У нас может быть несколько получателей и они могут быть обработчиками больших данных. Это значительно ускоряет процесс обработки.

Если получатель не удаляет сообщение из очереди, то это сообщение остается в очереди и через какое-то время получателям придется снова его обработать.

Одна из сфер применения очередей сообщений - это долгие и ресурсозатратные операции. Это может быть обработка больших массивов данных, подготовка отчетов, вычислительные операции и.т.д.

Клиент посылает запрос в очередь с просьбой подготовить ему отчет. Получатели обрабатывают отправленный набор данных и как он будет обработан, мы сохраняем обработанный результат и выдаем его клиенту.

Вот такая идея очереди сообщений и давайте в следующих видео посмотрим, как можно с этой очередью сообщений работать.