我们如何管理多个应用程序的Rabbitmq配置

时间:2019-07-10 11:13:17

标签: rabbitmq message-queue

当前,在为Rabbitmq管理应用程序配置时,我们使用以下方法:

  • 我们使用Ansible构建基本的Rabbitmq集群。

  • 然后,我们有20多种产品,每种产品都取决于RabbitMQ,并且每种产品对于产生和使用消息都有不同的要求。 每个应用程序都有一个json文件,其中描述了该应用程序所需的每个交换/队列/绑定(例如rabbitmq.json),我们以预先定义的方式生成交换/队列/绑定(请参见下文) 每个应用程序都注册所需的生产者和消费者 每个应用程序还仅在应用程序运行期间创建活动的队列(这种类型的队列仅在少数应用程序中需要)

我遇到的这个问题与交换,队列和绑定的产生有关,它们的寿命超出了应用程序的生命周期。 当前,我们以预定义的方式在应用程序外部设置这些队列,即:

  • 为每个应用程序创建一个json文件,其中描述了该应用程序所需的每个交换/队列/绑定(例如rabbitmq.json)
  • 我们编写了一个脚本,然后遍历所有应用程序Rabbitmq.json文件,并生成一个新的单个Powershell脚本(例如,generate_queues_exchanges_bindings.ps1),其中包含我们管理api调用(可通过curl执行)的所有交换/队列和绑定
  • 然后我们执行在generate_queues_exchanges_bindings.ps1脚本中生成的curl命令

但是最近,我们一直在研究这一领域。我们中的一些人提议对每个应用程序(启动时)使用流利的接口来生成所有交换/队列/绑定等。这当然应该起作用,因为所有这些命令本质上都是幂等的。 其他人不想走在我们的应用程序中配置所有这些队列,交换和绑定的道路,而希望预先预先定义配置。

什么是正确/推荐的方法?我们应该预先配置Rabbitmq队列/交换/绑定,还是每个应用程序(启动时)负责确保创建这些队列/交换/绑定?

1 个答案:

答案 0 :(得分:1)

如果您的应用程序在启动时(或运行时)确保所需的资源可用,则维护会更加容易。如果将资源保存在定义文件中,它们将与您的应用程序不同步,甚至可能不在源代码管理中。

我的$ 0.02


注意: RabbitMQ团队监视rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。