在配置文件中定义RabbitMQ策略

在配置文件中定义RabbitMQ策略,rabbitmq,rabbitmqctl,Rabbitmq,Rabbitmqctl,默认情况下,我想为所有队列定义镜像。节点启动后,我当前必须: rabbitmqctl set_policy ha all”“{“ha mode”:“all”} 如果我的一个节点出现故障,我必须记住在重新启动时重新执行该代码 是否有方法自动配置我的节点以使用镜像队列?无法在rabbitmq.config文件中设置策略。一种解决方法是使用init脚本启动rmq,并将rabbitmqctl命令放在其中,以便在rmq启动或重新启动时运行该命令。可以在定义文件中指定策略,该文件可以从配置文件中引用 我如

默认情况下,我想为所有队列定义镜像。节点启动后,我当前必须:

rabbitmqctl set_policy ha all”“{“ha mode”:“all”}
如果我的一个节点出现故障,我必须记住在重新启动时重新执行该代码


是否有方法自动配置我的节点以使用镜像队列?

无法在
rabbitmq.config
文件中设置策略。一种解决方法是使用init脚本启动rmq,并将
rabbitmqctl
命令放在其中,以便在rmq启动或重新启动时运行该命令。

可以在定义文件中指定策略,该文件可以从配置文件中引用

我如何设置特定策略的示例(不确定是否可以在策略中指定ha):

/etc/rabbitmq/rabbitmq.config

[
{rabbit,
    [{vm_memory_high_watermark, 0.8}]
},
{rabbitmq_management,
    [{listener, [{port, 15672}]},
     {load_definitions, "/etc/rabbitmq/rabbitmq_definitions.json"},
     {http_log_dir, "/var/log/rabbitmq/management_http.log"}]
}
].
/etc/rabbitmq/rabbitmq_definitions.json

{       "users":[
            {"name":"rabbot","password_hash":"Cvse5iGOg20UqUq7Za9D1tatOJnMVDru4GHtxqc02g7zj5ur","tags":""},
            {"name":"rabnet","password_hash":"CqqG2fwvH6xz64NpibGJx2M7ZCyFnR1BQBM+C0KH2qRPmVxF","tags":"administrator"}],
    "vhosts":[
            {"name":"/"}],
    "permissions":[
            {"user":"viabot","vhost":"VIA","configure":".*","write":".*","read":".*"},
            {"user":"vianet","vhost":"VIA","configure":".*","write":".*","read":".*"}],
    "parameters":[],
    "policies":[
            {"vhost":"VIA","name":"DLX","pattern":".*","apply-to":"queues","definition":{"dead-letter-exchange":"dead_letter"},"priority":0}
            ],
    "queues":[
            {"name":"store_to_es","vhost":"VIA","durable":true,"auto_delete":false,"arguments":{}},
            {"name":"store_to_mongodb","vhost":"VIA","durable":true,"auto_delete":false,"arguments":{}}
            ],
    "exchanges":[
            {"name":"data_incoming","vhost":"VIA","type":"fanout","durable":true,"auto_delete":false,"internal":false,"arguments":{}},
            {"name":"sms_incoming","vhost":"VIA","type":"fanout","durable":true,"auto_delete":false,"internal":false,"arguments":{}}
            ],
    "bindings":[
            {"source":"data_incoming","vhost":"VIA","destination":"store_to_es","destination_type":"queue","routing_key":"","arguments":{}},
            {"source":"sms_incoming","vhost":"VIA","destination":"store_to_mongodb","destination_type":"queue","routing_key":"","arguments":{}}
    ]
}
我正在共享这个配置文件和定义文件,因为无法从RabbitMQ网站上找到它

注意:此配置在运行于Ubuntu 14.04的RabbitMQ 3.6.1上有效

要添加更多细节,我就是这样做的

首先:
sudo nano/etc/rabbitmq/rabbitmq.config
(此命令可能因操作系统而异)

重要提示:ha同步批大小仅在3.6.0以上的RabbitMQ版本中受支持! 如果您的兔子年龄大于此值,请从
rabbitmq_definitions.json
中删除该设置


我正在使用Ubuntu14.04 Trusty和RabbitMQ v.3.6.2。

最后我发现了一些有用的东西: 不需要configMap或rabbitmq.config文件。 在


是的,您可以使用在重新启动时直接加载策略、队列、交换、绑定、用户等

  • 预先设定你的兔子 转到
    http://localhost:15672
    Admin->Policies页,然后创建所需的新策略:

    您还可以预先配置队列和其他内容

  • 转储定义
    curl-s-H“Accept:application/json”-u guest:guesthttp://localhost:15672/api/definitions >definitions.json

    您还可以使用web界面转储定义。打开“概述”选项卡,向下滚动:

    (!!!)更改
    definitions.json
    ,以便只在重新启动时保留所需的内容

    将有一节包含您的政策,保留它:

    ...
    "policies": [
      {
        "vhost": "/",
        "name": "ha-all",
        "pattern": "",
        "apply-to": "all",
        "definition": {
          "ha-mode": "all"
        },
        "priority": 0
      }
    ]
    ...
    
  • 重新启动时加载定义 将
    definitions.json
    放在兔子旁边,并将这一行添加到
    rabbit.conf
    。无需使用旧格式:

    management.load_definitions = /path/to/definitions.json
    
  • 以便在重新启动使用后加载某些内容


    向@IvanD致敬,因为我的答案与之基本相同,但揭示了详细的步骤和新的配置格式用法。评论空间不足

    ...
    "policies": [
      {
        "vhost": "/",
        "name": "ha-all",
        "pattern": "",
        "apply-to": "all",
        "definition": {
          "ha-mode": "all"
        },
        "priority": 0
      }
    ]
    ...
    
    management.load_definitions = /path/to/definitions.json