Зачем очереди
Очередь сообщений — посредник между сервисами: один кладёт сообщение, другой забирает, когда готов. Вместо прямого синхронного вызова (“кухня” звонит “официанту” и ждёт ответа), оба работают независимо через общую “доску заказов”.
Копнуть глубже
Главные выгоды очередей:
- Развязка во времени. Отправителю не нужно ждать, пока получатель обработает сообщение — положил и пошёл дальше.
- Устойчивость к сбоям. Если получатель временно недоступен, сообщение не теряется — ждёт в очереди, пока получатель не восстановится.
- Сглаживание нагрузки. Если вдруг пришла тысяча запросов разом, очередь принимает их все, а получатель обрабатывает в своём темпе, не падая от перегрузки.
Когда очередь не нужна. Если результат операции обязателен прямо сейчас для ответа пользователю (например, “проверить остаток на складе перед подтверждением заказа”) — это синхронный запрос (обычный REST-вызов), очередь тут не подходит, она для случаев, где можно подождать или where реакция не требуется немедленно (отправка email, обновление аналитики, уведомления).
Kafka и RabbitMQ — два самых популярных брокера сообщений в Java-экосистеме, оба реализуют идею очереди, но по-разному (подробное сравнение — в теме «Kafka vs RabbitMQ»).
• когда очередь не подходит и нужен обычный синхронный запрос (если дошёл до 2-го слоя).