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

我们如何管理多个应用程序的rabbitmq配置,rabbitmq,message-queue,Rabbitmq,Message Queue,目前,我们在管理rabbitmq的应用程序配置时使用以下方法: 我们使用Ansible构建了一个基本rabbitmq集群 然后,我们有20多个产品,每个产品都依赖于RabbitMQ,并且每个产品对消息的生成和使用都有不同的要求。 每个应用程序都有一个json文件,描述应用程序所需的每个交换/队列/绑定(例如rabbitmq.json),我们以预定义的方式生成交换/队列/绑定(见下文) 每个应用程序都注册它需要的生产者和消费者 每个应用程序还仅在应用程序运行期间创建实时队列(只有少数应用程序需要

目前,我们在管理rabbitmq的应用程序配置时使用以下方法:

  • 我们使用Ansible构建了一个基本rabbitmq集群

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

我提出的这个问题是关于在应用程序生命周期之外产生的交换、队列和绑定。 目前,我们以预定义的方式在应用程序外部设置这些队列,即:

  • 为每个应用程序创建一个json文件,该文件描述应用程序所需的每个交换/队列/绑定(例如rabbitmq.json)
  • 我们编写了一个脚本,然后遍历所有应用程序rabbitmq.json文件,并生成一个新的Powershell脚本(例如,generate_queues_exchanges_bindings.ps1),该脚本包含所有exchange/queue和绑定管理api调用(可通过curl执行)
  • 然后执行在这个generate_queues_exchanges_bindings.ps1脚本中生成的curl命令
然而,最近我们一直在关注这一领域。我们中的一些人建议在每个应用程序(启动时)使用fluent接口来生成所有的交换/队列/绑定等。这当然应该起作用,因为所有这些命令本质上都是幂等的。 其他人不希望在我们的应用程序中配置所有这些队列、交换和绑定,而是希望预先定义配置


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

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

我的0.02美元


注意:RabbitMQ团队监控
RabbitMQ用户
,并且有时只回答有关StackOverflow的问题