MAATRIX / Блог / RabbitMQ на VPS: брокер сообщений

RabbitMQ на VPS: брокер сообщений

Блог MAATRIX · 2026-07-07

RabbitMQ — надёжный брокер сообщений с гибкой маршрутизацией и гарантиями доставки. Он связывает микросервисы и разгружает приложения. Установим его на VPS, включим панель управления и настроим пользователей и очереди.

Зачем RabbitMQ

['RabbitMQ принимает сообщения от продюсеров и доставляет их консьюмерам, развязывая сервисы во времени: отправитель не ждёт, пока получатель обработает. Это основа для очередей задач, событийных архитектур и обмена между микросервисами.', '
  • Exchange — принимает сообщения и маршрутизирует их по правилам.
  • Queue — хранит сообщения до обработки.
  • Binding — правило, связывающее exchange с очередью.
', 'В отличие от Redis, RabbitMQ умеет сложную маршрутизацию (topic, fanout, headers) и подтверждения доставки. Брокер держит сообщения на диске, поэтому NVMe у MAATRIX важен для durable-очередей под нагрузкой: каждое persistent-сообщение — это запись на диск, и на медленном хранилище пропускная способность брокера упирается именно в него.']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для RabbitMQ

Установка и панель управления

['Ставим RabbitMQ из репозиториев и сразу включаем плагин management — веб-панель на порту 15672.', '
sudo apt update && sudo apt install -y rabbitmq-server\nsudo systemctl enable --now rabbitmq-server\nsudo rabbitmq-plugins enable rabbitmq_management
', 'Проверить, что брокер жив, и посмотреть статус:', '
sudo rabbitmqctl status\nsudo rabbitmqctl list_queues
', 'Панель доступна по http://<VPS_IP>:15672, но не открывайте её в интернет напрямую — только через reverse proxy или SSH-туннель.']

Пользователи и права

['Дефолтный guest/guest работает только с localhost и его нужно заменить. Создаём администратора и рабочего пользователя с правами на vhost.', '
sudo rabbitmqctl add_user admin \'СильныйПароль\'\nsudo rabbitmqctl set_user_tags admin administrator\nsudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"\n\nsudo rabbitmqctl add_user appuser \'ПарольПриложения\'\nsudo rabbitmqctl set_permissions -p / appuser ".*" ".*" ".*"
', 'Отдельный vhost изолирует окружения (например, prod и staging):', '
sudo rabbitmqctl add_vhost prod\nsudo rabbitmqctl set_permissions -p prod appuser ".*" ".*" ".*"
']

Продюсер и консьюмер на Python

['Библиотека pika — стандарт для работы с RabbitMQ из Python. Объявляем durable-очередь, чтобы сообщения переживали рестарт брокера.', '
pip install pika
', '
# producer.py\nimport pika\nconn = pika.BlockingConnection(\n    pika.ConnectionParameters(\n        "localhost",\n        credentials=pika.PlainCredentials("appuser", "ПарольПриложения"),\n    )\n)\nch = conn.channel()\nch.queue_declare(queue="tasks", durable=True)\nch.basic_publish(\n    exchange="", routing_key="tasks", body="job-1",\n    properties=pika.BasicProperties(delivery_mode=2),  # persistent\n)\nconn.close()
', '
# consumer.py\nch.queue_declare(queue="tasks", durable=True)\nch.basic_qos(prefetch_count=1)\ndef cb(ch, method, props, body):\n    print(body)\n    ch.basic_ack(delivery_tag=method.delivery_tag)\nch.basic_consume(queue="tasks", on_message_callback=cb)\nch.start_consuming()
']

Надёжность и мониторинг

['Три вещи делают доставку надёжной: durable-очередь, persistent-сообщения (delivery_mode=2) и ручное подтверждение (basic_ack). Без ack RabbitMQ вернёт сообщение в очередь, если консьюмер упал.', 'prefetch_count=1 не даёт одному консьюмеру нахватать задач впрок — они распределяются равномерно между воркерами. Без этой настройки быстрый консьюмер может забрать сотню сообщений в буфер, а медленный будет простаивать: очередь как бы есть, но обработка перекошена.', 'Мониторьте глубину очередей — растущий backlog значит, что консьюмеры не справляются:', "
watch -n 5 'sudo rabbitmqctl list_queues name messages consumers'
"]

Частые ошибки

['
  • guest недоступен по сети — это by design, работает только с localhost. Создавайте своего пользователя.
  • Сообщения теряются при рестарте — очередь не durable или сообщения не persistent.
  • Один консьюмер забирает всё — не выставлен prefetch_count.
  • Диск переполнен — очереди растут без консьюмеров, RabbitMQ включает flow control и блокирует продюсеров.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для RabbitMQ

Частые вопросы

RabbitMQ или Kafka?

RabbitMQ — про гибкую маршрутизацию и задачи-очереди. Kafka — про потоковые данные и переигрывание событий с большим объёмом. Для очередей задач RabbitMQ проще.

Сколько RAM нужно RabbitMQ?

Для умеренной нагрузки хватает 1–2 ГБ, но при больших очередях в памяти держите запас. RabbitMQ включает защиту при достижении memory watermark.

Можно ли использовать RabbitMQ с Celery?

Да, RabbitMQ — рекомендуемый брокер для Celery при сложной маршрутизации и строгих требованиях к доставке.