在配置文件中定义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