Карта / RabbitMQ / Знакомство с RabbitMQ

Знакомство с RabbitMQ

RabbitMQ — брокер сообщений, классическая очередь в более привычном виде, чем Kafka — сообщение доставляется и удаляется, а не хранится журналом (см. тему «Topic» для сравнения подхода Kafka).

@Component
class OrderListener {

    @RabbitListener(queues = "orders")
    void handleOrder(Order order) {
        sendConfirmationEmail(order);
    }
}

@Service
class OrderService {
    private final RabbitTemplate rabbitTemplate;

    void createOrder(Order order) {
        rabbitTemplate.convertAndSend("orders", order);
    }
}
Копнуть глубже

Главное концептуальное отличие от Kafka. В RabbitMQ сообщение, как только его подтвердил (ack) consumer, удаляется из очереди — оно предназначено одному получателю. Если нужно, чтобы несколько разных сервисов получили одно и то же сообщение, в RabbitMQ для этого используется отдельный механизм (fanout exchange, см. тему «Exchange, Queue, Binding») — в отличие от Kafka, где это естественное поведение топика (несколько Consumer Group читают независимо).

RabbitMQ проще для классических задач очередей — задачи на обработку (отправить письмо, сгенерировать отчёт), где порядок не критичен и не нужна история сообщений. Реализует протокол AMQP — открытый стандарт обмена сообщениями.

🎤 Закрыл тему, если можешь объяснить:
• базовую модель RabbitMQ — отправка и получение сообщений;
• чем модель RabbitMQ (удаление после получения) отличается от Kafka (журнал) (если дошёл до 2-го слоя).