Несколько заметок по работе с RabbitMQ

Когда для проекта мне понадобилось докеризовать rabbitmq, то я подумал, что ничего проще и быть не может и сейчас мы все это на изях сделаем. Но, как обычно, все оказалось немного сложнее в реальной жизни. Так-как я знатно походил по граблям, то пожалуй стоит немного задокументировать, где эти грабли аккуратно разложены. 

Запуск RabbitMQ в Docker

Пример описания сервиса

Помимо рекомендованных /var/lib/rabbitmq/ и /var/log/rabbitmq/ я бы посоветовал еще вынести во внешние тома /etc/rabbitmq и обязательно прописывать hostname или в противном случае база данных узла кролика будет инициализироваться с рандомным ID (на baremetal я такого не ловил, но вот с контейнерами получилось очень интересно).

version: "3.9"
services:
    rabbitmq:
      image: rabbitmq:3-management-alpine
      container_name: rabbitmq
      hostname: rabbitmq
      ports:
          - 5672:5672
          - 15672:15672
      volumes:
          - ./rabbitmq/data/:/var/lib/rabbitmq/
          - ./rabbitmq/log/:/var/log/rabbitmq
          - ./rabbitmq/etc/:/etc/rabbitmq

Файлы в /etc/

conf.d/10-defaults.conf  

loopback_users.guest = false
log.console = true

enabled_plugins  

[rabbitmq_management,rabbitmq_prometheus]

rabbitmq.conf  

auth_mechanisms.1 = PLAIN
auth_mechanisms.2 = AMQPLAIN
loopback_users.guest = false
listeners.tcp.default = 5672
default_pass = admin
default_user = admin
hipe_compile = false
#management.listener.port = 15672
#management.listener.ssl = false
management.tcp.port = 15672
management.load_definitions = /etc/rabbitmq/definitions.json

definitions.json  

{
  "users": [
   {
     "name": "admin",
     "password": "admin",
     "tags": "administrator"
   }
 ],
 "vhosts": [
   {
     "name": "/"
   }
 ],
 "policies": [
   {
     "vhost": "/",
     "name": "ha",
     "pattern": "",
     "apply-to": "all",
     "definition": {
       "ha-mode": "all",
       "ha-sync-batch-size": 256,
       "ha-sync-mode": "automatic"
     },
     "priority": 0
   }
 ],
 "permissions": [
   {
     "user": "admin",
     "vhost": "/",
     "configure": ".*",
     "write": ".*",
     "read": ".*"
   }
 ],
 "queues": [
   {
     "name": "job-import.triggered.queue",
     "vhost": "/",
     "durable": true,
     "auto_delete": false,
     "arguments": {}
   }
 ],
 "exchanges": [
   {
     "name": "lob-proj-dx",
     "vhost": "/",
     "type": "direct",
     "durable": true,
     "auto_delete": false,
     "internal": false,
     "arguments": {}
   }
 ],
 "bindings": [
   {
     "source": "lob-proj-dx",
     "vhost": "/",
     "destination": "job-import.triggered.queue",
     "destination_type": "queue",
     "routing_key": "job-import.event.triggered",
     "arguments": {}
   }
 ]
}

Теперь данные сохраняются локально в не зависимости от операций с контейнерами Rabbitmq.

Доступы

Доступ к web-интерфейсу: http://127.0.0.1:15672

Логин-пароль: admin/admin

Примечание

Обязательно указываем hostmane в docker-compose.yml или в противном случае база данных rabbitmq будет пересоздаваться заново.

Шпаргалка по работе в консоли RabbitMQ

Кластер и очереди

Проверка статуса кластера

# rabbitmqctl cluster_status

Авторизоваться от имени другого пользователя

# rabbitmqctl authenticate_user USER PASSWORD

Список всех очередей на всех виртуальных хостах

# for i in $(rabbitmqctl list_vhosts); do echo vhost: $i && rabbitmqctl list_queues -p $i; done

Смена типа узла с disk на ram

# rabbitmqctl change_cluster_node_type ram

Установка плагинов

# rabbitmq-plugins enable amqp_client rabbitmq_consistent_hash_exchange

Похожие записи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Nextcloud — отличное решение для хранения файлов, но управление пользователями вручную становится головной болью при масштабировании. Keycloak позволяет централизовать аутентификацию, обеспечивая безопасность, поддержку MFA (двухфакторной аутентификации) и удобный вход через…

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Пакеты в Ubuntu по умолчанию настроены на работу с серверами, имеющими довольно много оперативной памяти. Нам нужно жёстко ограничить потребление памяти для работы на Mikro VPS. Запускать будем мой блог…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Интеграция Gitea и Keycloak: пошаговое руководство

Интеграция Gitea и Keycloak: пошаговое руководство

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда