Как мы управляем конфигурацией rabbitmq для нескольких приложений - PullRequest
1 голос
/ 10 июля 2019

В настоящее время мы используем следующий подход при управлении конфигурацией приложения для rabbitmq:

  • Мы строим базовый кластер rabbitmq, используя Ansible.

  • Затем у нас есть более 20 продуктов, каждый из которых зависит от RabbitMQ, и у каждого будут свои требования к производству и потреблению сообщений.Каждое приложение имеет файл json, который описывает каждый обмен / очередь / привязку, необходимый для приложения (например, rabbitmq.json), мы генерируем обмены / очереди / привязки заранее определенным способом (см. Ниже). Каждое приложение регистрирует производителей и потребителей.требует, чтобы каждое приложение также создавало очереди в реальном времени только на время работы приложения (этот тип очереди требуется только нескольким приложениям)

Этот вопрос, который у меня возникает, касается генерации обменов, очереди и привязки, которые живут за пределами жизненного цикла приложения.В настоящее время мы настраиваем эти очереди вне самих приложений заранее определенным способом, а именно:

  • Создайте файл json для приложения, который описывает каждый обмен / очередь / привязку, требуемый для приложения (например, rabbitmq.json)
  • Мы написали сценарий, который затем проходит через все файлы rabbitmq.json приложения и генерирует новый единственный сценарий Powershell (например, generate_queues_exchanges_bindings.ps1), который содержит все обменные / очереди и привязки, которые мы управляем API-вызовами (исполняемые черезcurl)
  • Затем мы выполняем команды curl, сгенерированные в этом сценарии generate_queues_exchanges_bindings.ps1

Однако недавно мы изучали эту область.Некоторые из нас предлагают использовать свободный интерфейс для каждого приложения (при запуске) для генерации всех обменов / очередей / привязок и т. Д. Это, конечно, должно работать, поскольку все эти команды являются идемпотентными по своей природе.Другие не хотят идти по пути настройки всех этих очередей, обменов и привязок в нашем приложении и хотят заранее определить конфигурацию заранее.

Какой правильный / рекомендуемый подход?быть предварительной настройкой наших очередей / обменов / привязок rabbitmq или каждое приложение должно (при запуске) отвечать за создание этих очередей / обменов / привязок?

1 Ответ

1 голос
/ 10 июля 2019

Обслуживание будет проще, если ваши приложения обеспечат доступ к необходимым ресурсам при запуске (или во время работы). Если вы сохраняете ресурсы в файлах определений, они не синхронизируются с вашими приложениями и могут даже не находиться в системе контроля версий.

Мои $ 0,02


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы по StackOverflow.

...