RabbitMQ-鏡像隊列配置相關

設置policy方法

clipboard.png

例如咱們將知足規則「*_mirrored_queue」的隊列設置爲鏡像隊列
./rabbitmqctl set_policy -p wenda-action mirrored_queue_policy_all ".*_mirrored_queue" '{"ha-mode":"all"}'
以後申請的全部知足「*_mirrored_queue」規則的隊列都是鏡像隊列測試

tips:經過測試代表,使用policy的正則規則,能夠設置鏡像隊列。若是沒有設置policy,在申明隊列的時候(queue_declare方法)使用x-ha-policy這個參數設置的鏡像隊列是無效的。設置了policy正則規則,不使用x-ha-policy參數,只要知足正則規則的queue也會自動變成鏡像隊列,(許多博客上是說明了用隊列的x-ha-policy參數來設置鏡像隊列,卻沒有指明須要提早建立好policy規則)。spa

rabbitmq文檔說明:rabbitmq

clipboard.png

鏡像隊列的同步機制

當一個隊列申明爲鏡像隊列以後,而且ha-mode:all,集羣中全部的節點都會有該隊列的鏡像,當隊列已經有一些數據以後,往集羣中加入一個新節點,新節點加入集羣以後會自動建立該隊列的鏡像,可是隊列以前是有數據的,這些數據是立馬同步到新節點仍是手動同步,這時候須要鏡像隊列的同步機制
queue_declare()方法中arg參數中有該配置:
ha-sync-mode manual 手動同步 | automatic 自動同步隊列

tips:一個隊列正在同步的時候,改隊列的全部操做都會阻塞,由於各類緣由可能會阻塞幾分鐘、幾小時甚至幾天。(因此隊列同步需謹慎)ip

相關文章
相關標籤/搜索