Встречается на собеседованиях • сегодня
Что будет в RabbitMQ если сообщение не доставлено
Если сообщение в RabbitMQ не доставлено (например, consumer не подтвердил получение или произошла ошибка), поведение зависит от настроек:
- Без подтверждения (ack):
Если consumer не отправилbasicAck, сообщение остается в очереди и будет повторно доставлено (даже тому же consumer).
-
С отрицательным подтверждением (nack):
ПриbasicNackсообщение можно либо отбросить, либо вернуть в очередь (зависит от параметраrequeue). -
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);
}
});
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы