📨 Очереди сообщений: зачем системе асинхронный обмен Синхронный вызов связывает участников по времени: получатель недоступен — отправитель стоит и ждёт тайм-аут. Очередь устраняет эту связность: отправитель пишет сообщения, даже когда получатель лежит, а получатель обрабатывает их, когда отправитель уже завершился. Брокеры (RabbitMQ) и распределённые логи (Kafka) решают разные задачи. Первые — гибкая маршрутизация и доставка каждому потребителю. Вторые — неизменяемый журнал, воспроизведение потока и конкурирующие consumer groups, читающие одну запись независимо. Отдельная тема — гарантии доставки. At-most-once не теряет время на повторы, но теряет сообщения; at-least-once надёжнее, но требует идемпотентной обработки; exactly-once в чистом виде дорог и на практике собирается из первых двух плюс дедупликация. 💡 Правило выбора простое: очередь — когда сообщение нужно обработать один раз и удалить; лог — когда история событий важна сама по себе. 🔗 Подробнее: https://agaltsovav.ru/docs/architecture/message-queues/