Встречается на собеседованиях • сегодня

Что будет в RabbitMQ если сообщение не доставлено

Если сообщение в RabbitMQ не доставлено (например, consumer не подтвердил получение или произошла ошибка), поведение зависит от настроек:

  1. Без подтверждения (ack):
    Если consumer не отправил basicAck, сообщение остается в очереди и будет повторно доставлено (даже тому же consumer).
  1. С отрицательным подтверждением (nack):
    При basicNack сообщение можно либо отбросить, либо вернуть в очередь (зависит от параметра requeue).

  2. Dead Letter Exchange (DLX):
    Если настроен DLX, сообщение может быть перенаправлено в другую очередь после определенного числа попыток.

Пример с basicNack:

java
channel.basicConsume(queueName, false, (consumerTag, delivery) -> {
    try {
        // Обработка сообщения
        channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
    } catch (Exception e) {
        // Возврат в очередь
        channel.basicNack(delivery.getEnvelope().getDeliveryTag(), false, true);
    }
});
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы