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

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

RabbitMQ на VPS: брокер сообщений для очередей и микросервисов
Блог MAATRIX · 2026-07-07

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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Зачем 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
sudo systemctl enable --now rabbitmq-server
sudo rabbitmq-plugins enable rabbitmq_management

Проверить, что брокер жив, и посмотреть статус:

sudo rabbitmqctl status
sudo rabbitmqctl list_queues

Панель доступна по http://<VPS_IP>:15672, но не открывайте её в интернет напрямую — только через reverse proxy или SSH-туннель.

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

Дефолтный guest/guest работает только с localhost и его нужно заменить. Создаём администратора и рабочего пользователя с правами на vhost.

sudo rabbitmqctl add_user admin 'СильныйПароль'
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

sudo rabbitmqctl add_user appuser 'ПарольПриложения'
sudo rabbitmqctl set_permissions -p / appuser ".*" ".*" ".*"

Отдельный vhost изолирует окружения (например, prod и staging):

sudo rabbitmqctl add_vhost prod
sudo rabbitmqctl set_permissions -p prod appuser ".*" ".*" ".*"

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

Библиотека pika — стандарт для работы с RabbitMQ из Python. Объявляем durable-очередь, чтобы сообщения переживали рестарт брокера.

pip install pika
# producer.py
import pika
conn = pika.BlockingConnection(
    pika.ConnectionParameters(
        "localhost",
        credentials=pika.PlainCredentials("appuser", "ПарольПриложения"),
    )
)
ch = conn.channel()
ch.queue_declare(queue="tasks", durable=True)
ch.basic_publish(
    exchange="", routing_key="tasks", body="job-1",
    properties=pika.BasicProperties(delivery_mode=2),  # persistent
)
conn.close()
# consumer.py
ch.queue_declare(queue="tasks", durable=True)
ch.basic_qos(prefetch_count=1)
def cb(ch, method, props, body):
    print(body)
    ch.basic_ack(delivery_tag=method.delivery_tag)
ch.basic_consume(queue="tasks", on_message_callback=cb)
ch.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

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

RabbitMQ или Kafka?

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

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

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

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

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