在导出RabbitMQ集群元数据时,RabbitMQ支持导出全部Vhost或某个指定的Vhost,而不支持导出部分Vhost。您可以先导出全部Vhost,然后在导出的元数据文件中删除不需要的Vhost,从而间接实现导出部分Vhost。

前提条件

在导出RabbitMQ集群元数据前,请确保您已开启RabbitMQ管理插件。开启RabbitMQ管理插件后,您才可以通过RabbitMQ控制台或HTTP API导出RabbitMQ集群元数据。详情请参见开启RabbitMQ管理插件

背景信息

某个RabbitMQ集群有6个Vhost(hello1hello_amqphelloAMQPexample2testexample3test/)。本文以导出其中4个Vhost (hello1hello_amqphelloAMQPexample2test)为例进行说明。

导出部分Vhost

  1. 参考以下任一方式导出包括全部Vhost的RabbitMQ集群元数据文件。
    • RabbitMQ控制台
      1. 在浏览器打开RabbitMQ控制台。

        RabbitMQ控制台地址:http://<您的RabbitMQ IP地址>:15672/

      2. 在登录页面的Username文本框输入您的用户名,在Password文本框输入您的密码,然后单击Loginpg_login
      3. Overview页签下方,单击Import/export definitions,从Export区域的Virtual host列表,选择All,然后单击Download broker definitionspg_ui_export
      4. 另存为对话框,选择RabbitMQ集群元数据文件保存路径,然后单击保存pg_export_source
    • RabbitMQ HTTP API
      1. 打开终端。
      2. 执行以下命令导出RabbitMQ集群元数据文件。
        wget --user <您的RabbitMQ账号> --password <您的RabbitMQ密码> http://<您的RabbitMQ IP地址>:15672/api/definitions -O <您的元数据文件保存路径>
    导出的RabbitMQ集群元数据文件的vhosts列表如下:
    {
        "vhosts":[
            {
                "name":"hello1"
            },
            {
                "name":"hello_amqp"
            },
            {
                "name":"helloAMQP"
            },
            {
                "name":"example2test"
            },
            {
                "name":"example3test"
            },
            {
                "name":"/"
            }
        ]
    }
  2. 在导出的RabbitMQ集群元数据文件的vhosts列表中删除不需要的example3test/
    说明 当您从vhosts列表删除某个Vhost后,该Vhost下的Exchange、Queue和Binding都会同时失效,即这些Exchange、Queue和Binding在导入消息队列AMQP版时会被自动忽略。
    修改后的RabbitMQ集群元数据文件的vhosts列表如下:
    {
        "vhosts":[
            {
                "name":"hello1"
            },
            {
                "name":"hello_amqp"
            },
            {
                "name":"helloAMQP"
            },
            {
                "name":"example2test"
            }
        ]
    }