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

Как обеспечить отказоустойчивость в RabbitMQ

Для обеспечения отказоустойчивости в RabbitMQ можно использовать несколько подходов:

  1. Кластеризация - объединение нескольких нод RabbitMQ в кластер для репликации данных. Если одна нода падает, другие продолжают работать.
python
# Пример объявления очереди с durable=True
channel.queue_declare(queue='task_queue', durable=True)
  1. Зеркалирование очередей - настройка политик для репликации очередей между нодами:
bash
rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}'
  1. Подтверждение обработки (acknowledgments) - гарантирует, что сообщение не потеряется, если worker упадет:
python
channel.basic_consume(queue='task_queue', 
                     on_message_callback=callback,
                     auto_ack=False)  # важно отключить auto_ack
  1. Сохраняемые сообщения - маркировка сообщений как persistent:
python
properties=pika.BasicProperties(
    delivery_mode=2,  # делает сообщение persistent
)
  1. Резервный брокер - настройка HAProxy для переключения на standby-сервер при падении основного.

Дополнительно стоит мониторить состояние очередей и настраивать алерты при достижении лимитов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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